c++ - 在 C++ 中将输入直接输入到 vector 中

标签 c++ stl vector iostream

考虑以下代码片段:

...
int N,var;
vector<int> nums;
cin >> N;
while (N--)
{
   cin >> var;
   nums.push_back(var);
}
...

是否可以在不使用辅助变量的情况下执行此操作,在本例中为 var

最佳答案

假设您已经阅读了初始的 N,使用 istream_iterator 有一个很好的技巧:

std::vector<int> nums;
nums.reserve(N);
std::copy(std::istream_iterator<int>(std::cin), 
          std::istream_iterator<int>(),
          std::back_inserter(nums));

back_inserter 对象将自身变成一个迭代器,在最后向 vector 添加元素。迭代器流可以通过读取的元素类型进行参数化,如果没有给出参数,则表示输入结束。

关于c++ - 在 C++ 中将输入直接输入到 vector 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4179655/

相关文章:

c++ - 从 vector 中删除最后一个元素直到条件

c++ - map 的 map 和自定义分配器

c++ - 没有带有 unordered_map 的模板函数实例

c++ - 最大编号可以存储在 std::vector<int> 中的元素的数量

c++ - Eigen::vector::normalize 精度

c++ - 堆栈上的对象意外被删除

c++ - 什么时候在一个文件中多次包含相同的 header 有用?

c++ - 如何初始化 vector 的 vector 结构?

c++ - 用 C++ 将数据写入文件 - 最有效的方式?

c++ - std::vector/编程书籍神话的默认大小?