最近在研究STL,突然对于vector有个特殊的想法,假设本人定义一个vector的容量为1000,然后用户可能是输入100个元素或74的元素,或其他,我们要做的是把用户的输入存入vector中然后输出,具体的本人写过一段测试代码
#include <iostream> #include <vector> using namespace std; void outputValue(vector<int> vec); int main() { vector<int> vec; vec.reserve(100); int a; for(int i = 0; i <= 5; i++){ /*此处有个问题,假设我们事先不知道用户会输入 多长的数组,那么我们该怎么样处理?本人这里是假 设用户会输入6个数,但是我们现实中常常不知 道用户会输入多少的数。*/ cin >> a; vec.push_back(a); } cout << "vector output :"; outputValue(vec); cout << "size: " << vec.size() << endl; cout << "capacity: " << vec.capacity() << endl; return 0; } void outputValue(vector<int> vec) { for(int i = 0; i < vec.size(); i++){ cout << vec[i] << " " ; } cout << endl; }
要求输出的结果如下:
本人能想到的就是添加一个变量用于提示用户输入他要输入的元素个数,然后用于for循环的第二个条件,但是这样就对用户不太友好,想问问大家有没有好的修改方法,谢谢!
解决方案
12
那就改成这样:
while(cin >> a) { vec.push_back(a); }
当用户不想输入结束时,输入ctrl+z 回车 来结束循环
14
#include <iostream> #include <vector> using namespace std; void outputValue(vector<int> vec); int main() { vector<int> vec; vec.reserve(100); int a; while(cin >> a){//cin输入成功后回返回true,输入完毕(在命令行里输入Ctrl+Z表示输入完毕)就退出循环 vec.push_back(a); } cout << "vector output :"; outputValue(vec); cout << "size: " << vec.size() << endl; cout << "capacity: " << vec.capacity() << endl; return 0; } void outputValue(vector<int> vec) { for(int i = 0; i < vec.size(); i++){ cout << vec[i] << " " ; } cout << endl; }