1、编写一程序,让用户自由地从键盘上输入整数,直到输入数字0时结束。把用户输入的数据保存在模板类vector定义的对象中,并对用户输入的所有数进行排序输出。在向显示器进行输出时,要求用以下3种方式实现: 1)仅使用vector的相关成员函数,不使用迭代器进行输出; 2)使用迭代器自己编程输出; 3)使用STL提供的通用算法for_each进行输出。
时间: 2023-12-10 19:40:27 浏览: 78
下面是实现程序:
```
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
template <typename T>
void output(const vector<T>& v) {
// 使用vector的相关成员函数输出
cout << "output using vector member functions: ";
for (int i = 0; i < v.size(); ++i) {
cout << v[i] << " ";
}
cout << endl;
}
template <typename T>
void output_using_iterator(const vector<T>& v) {
// 使用迭代器输出
cout << "output using iterator: ";
typename vector<T>::const_iterator iter = v.begin();
while (iter != v.end()) {
cout << *iter++ << " ";
}
cout << endl;
}
template <typename T>
void output_using_for_each(const vector<T>& v) {
// 使用for_each输出
cout << "output using for_each: ";
for_each(v.begin(), v.end(), [](const T& i){cout << i << " ";});
cout << endl;
}
int main() {
vector<int> v;
int n;
cout << "Please enter integers (enter 0 to end):" << endl;
do {
cin >> n;
if (n != 0) v.push_back(n);
} while (n != 0);
sort(v.begin(), v.end());
output(v);
output_using_iterator(v);
output_using_for_each(v);
return 0;
}
```
程序运行效果如下:
```
Please enter integers (enter 0 to end):
5 7 1 3 0
output using vector member functions: 1 3 5 7
output using iterator: 1 3 5 7
output using for_each: 1 3 5 7
```
阅读全文