请用C++实现:编写一程序,让用户自由地从键盘上输入整数,直到输入数字 0 时 结束。把用户输入的数据保存在模板类 vector 定义的对象中,并对 用户输入的所有数进行排序输出。在向显示器进行输出时,要求用以 下 3 种方式实现: 1)仅使用 vector 的相关成员函数,不使用迭代器进行输出; 2)使用迭代器自己编程输出; 3)使用 STL 提供的通用算法 for_each 进行输出。 (提示:实现该题目时,首先定义模板类 vector 的一个对象,利用 该对象进行对用户输入数据的操作。在进行数据输出时,第一种方式 考虑采用类似于数组的随机访问方法,第二种方式利用 Vector 的迭 代器进行输出,第二种方式则利用 STL通用算法for_each进行实现, 也可以才用 copy 函数进行实现。
时间: 2024-01-22 11:19:31 浏览: 55
c++输入一个整数,输出一个整数
以下是C++实现代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
template<class T>
class MyVector {
public:
void push_back(T x) {
vec.push_back(x);
}
void sort() {
std::sort(vec.begin(), vec.end());
}
void output1() {
for (int i = 0; i < vec.size(); i++) {
cout << vec[i] << " ";
}
cout << endl;
}
void output2() {
for (auto it = vec.begin(); it != vec.end(); it++) {
cout << *it << " ";
}
cout << endl;
}
void output3() {
for_each(vec.begin(), vec.end(), [](T x) { cout << x << " "; });
cout << endl;
}
private:
vector<T> vec;
};
int main() {
int x;
MyVector<int> v;
while (cin >> x && x != 0) {
v.push_back(x);
}
v.sort();
v.output1();
v.output2();
v.output3();
return 0;
}
```
使用模板类 `MyVector` 封装 vector 对象,实现了 `push_back()`、`sort()`、`output1()`、`output2()`、`output3()` 函数分别实现数据的插入、排序和三种输出方式。
在 `main()` 函数中,读入数字并插入到 `MyVector` 对象中,然后进行排序和三种输出方式的测试。
阅读全文