按照正常套路出题的要求,应该是第一行输入一个正整数N,表示数组有几个数
第二行则是输入数组的数据
比如
4
1 2 3 4
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int N;
while(cin>>N)
{
vector<int> v(N);
for(int i=0;i<N;++i)
{
cin>>v[i];
}
}
return 0;
}
有了那个N,可以初始化数组长度,也可以设置循环的次数,输入就变得很简单
但是,有些出题者不告诉那个N是多少,直接说输入两组数据,空格隔开
比如,
1 2 3 4
4 3 2 1
这种不定长的数组,数组长度取决于输入的数据有多少,所以不能自己设置(设置太多浪费空间,设置太少会越界),只能使用push_back,让编译器自动扩容
不告知数据有多少个带来的主要问题就是输入的循环如何结束,cin从流中提取数据会跳过空格,所以只要输入的最后一个字符不是空格,说明输入结束了
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> v1;
vector<int> v2;
char c;
int value1;
int value2;
while (cin >> value1)
{
v1.push_back(value1);
c = cin.get();
if (c != ' ')
{
break;
}
}
while (cin >> value2)
{
v2.push_back(value2);
c = cin.get();
if (c != ' ')
{
break;
}
}
return 0;
}
这样就可以达到空格间隔,回车结束的不定长数组输入
效果图: