C ++初始化变量并使用std :: cin进行赋值

时间:2017-12-24 12:43:43

标签: c++ cin

这可能是一个有点愚蠢的问题,但我在其他地方找不到任何答案。我用C ++编写代码(至少我认为是11)并且必须使用:

int N;
cin >> N;  

我的问题是,是否有一种优雅的方式将其写为一行命令?我已经知道我可以删除换行符并将它们放在一行上,但这不会让我在oneliner循环中使用它:

for(int i=0; i<10; i++) myVector.push_back();

3 个答案:

答案 0 :(得分:5)

除了编写函数之外,您还可以将初始化和读取放入for循环的标题中:

for (int i = 0, n ; i != 5 && cin >> n ; i++)
    x.push_back(n);

这也解决了必须检查cin >> n的返回值以确保正确读取值的问题。

Demo.

答案 1 :(得分:4)

使用算法和迭代器的另一种选择:

std::copy_n(std::istream_iterator<int>{std::cin}
           ,10
           ,std::back_insert_iterator<std::vector<int>>{myVector});

答案 2 :(得分:0)

我不认为你的方法是“最好的”,你在向量上推回位置(这是如此昂贵)并且你已经知道了向量的位置。 你为什么不这样做:

myVector.resize(10);
for (int i = 0; i < 10; i++) cin >> myVector [i];

但是,如果你不能因为你想使用push_back(),你为什么不打开括号并在里面编写代码呢?这有什么关系?