编写一程序,让用户自由地从键盘上输入整数,直到输入数字 0 时 结束。把用户输入的数据保存在模板类 vector 定义的对象中,并对 用户输入的所有数进行排序输出。在向显示器进行输出时,要求用以 下 3 种方式实现: 1)仅使用 vector 的相关成员函数,不使用迭代器进行输出; 2)使用迭代器自己编程输出; 3)使用 STL 提供的通用算法 for_each 进行输出。
时间: 2023-11-22 21:56:15 浏览: 75
以下是可行的程序代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
template<typename T>
void outputVector1(const vector<T>& vec) {
for (int i = 0; i < vec.size(); ++i) {
cout << vec[i] << " ";
}
cout << endl;
}
template<typename T>
void outputVector2(const vector<T>& vec) {
typename vector<T>::const_iterator iter;
for (iter = vec.begin(); iter != vec.end(); ++iter) {
cout << *iter << " ";
}
cout << endl;
}
template<typename T>
void outputVector3(const vector<T>& vec) {
for_each(vec.begin(), vec.end(), [](const T& x) {cout << x << " "; });
cout << endl;
}
int main() {
vector<int> vec;
int input;
cin >> input;
while (input != 0) {
vec.push_back(input);
cin >> input;
}
sort(vec.begin(), vec.end());
cout << "Using vector's member functions: ";
outputVector1(vec);
cout << "Using iterators: ";
outputVector2(vec);
cout << "Using for_each algorithm: ";
outputVector3(vec);
return 0;
}
```
首先,我们定义了三个函数,分别用于输出 vector 中的数据。第一个函数 `outputVector1` 使用了 vector 的相关成员函数进行输出;第二个函数 `outputVector2` 使用了迭代器进行输出;第三个函数 `outputVector3` 使用了 STL 提供的通用算法 `for_each` 进行输出。
在主函数中,我们首先声明了一个模板类 vector 对象,并从键盘上读入整数,将其添加到 vector 中。然后,我们使用 `sort` 函数对 vector 中的数据进行排序。
最后,我们依次调用三个输出函数,对 vector 中的数据进行输出。
阅读全文