编写一程序,让用户自由地从键盘上输入整数,直到输入数字0时结束。把用户输入的数据保存在模板类vector定义的对象中,并对用户输入的所有数进行排序输出。在向显示器进行输出时,要求用以下3种方式实现:
1)仅使用vector的相关成员函数,不使用迭代器进行输出;
2)使用迭代器自己编程输出;
3)使用STL提供的通用算法for_each进行输出。
(提示:实现该题目时,首先定义模板类vector的一个对象,利用该对象进行对用户输入数据的操作。在进行数据输出时,第一种方式考虑采用类似于数组的随机访问方法,第二种方式利用Vector的迭代器进行输出,第二种方式则利用STL通用算法for_each进行实现,也可以才用copy函数进行实现。)
三种输出方式写在一个代码里了,有注释.
下面是输入后,通过3种方式输出的截图:
代码如下;
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> vec;
int t;
//输入整数,直到输入0为止
while (1)
{
cin >> t;
if (t != 0)
vec.push_back(t);
else
break;
}
//排序
sort(vec.begin(), vec.end());
//输出
//1.第一种方式,使用成员函数
for (int i = 0; i < vec.size(); i++)
{
if (i < vec.size() - 1)
cout << vec.at(i) << " ";
else
cout << vec.at(i) << endl;
}
//2.第二种方式,使用迭代器
vector<int>::iterator it = vec.begin();
for (; it != vec.end(); it++)
{
if (it == vec.begin())
cout << *it;
else
cout << " " << *it;
}
cout << endl;
//3.第三种方式,使用for_each
for_each(vec.begin(), vec.end(), [](int elem) {std::cout << elem << " "; }
);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!