如何获取元素数量未知的数组的输入?

时间:2018-06-22 11:20:29

标签: c++ arrays

int n = 10;
int a[n];  
for (int i = 0; i < n; i++)
{
    cin >> a[i];
}

当我们知道n的大小时,这就是我输入数组的方式。但是,当我们不知道n的大小时,我们必须在数组中接受输入,并在出现新行时停止接受输入。我们如何在C ++中做到这一点?

4 个答案:

答案 0 :(得分:2)

std::vector<int>是您所需要的。将其视为动态大小的数组。

您可以使用.push_back()

向矢量添加元素

请参阅https://en.cppreference.com/w/cpp/container/vector

答案 1 :(得分:2)

要停止接受输入,您需要使用EOF Concept。即文件结尾。将cin放入while循环中。 像这样-

while (cin >> n)
{
  a.push_back(n);
}

答案 2 :(得分:0)

因此,这阻止了您进行错误检查,但是至少对于我的玩具项目而言,是将vectoristream_iterator一起使用,所以类似这样:

const vector<int> a{ istream_iterator<int>{ cin }, istream_iterator<int>{} }

Live Example

答案 3 :(得分:0)

除非您正在使用string,否则可能需要stoi();类型的向量 所以基本上像下面的代码。

int n = 10;
vector<string> a; 
string temp; 

while(cin>>temp)
{
   a.push_back(temp);
}

vector<int> a; 
while(cin>>temp)
    {
       a.push_back(stoi(temp));
    }