在std :: vector构造函数中使用'{}'作为结束迭代器

时间:2019-10-23 16:51:30

标签: c++ iterator istream-iterator

一种读取文件并将其作为字节数组放入矢量的方法是:

std::vector

据我了解,以上代码段中用于template< class InputIt > vector( InputIt first, InputIt last, const Allocator& alloc = Allocator() ); 的构造函数为

{}

因此,last对应于{}

{{1}}到底是什么?它像空/空迭代器一样工作吗?

1 个答案:

答案 0 :(得分:5)

  

因此,{}对应于last。
  {}到底是什么?它像空/空迭代器一样工作吗?

这是std::istreambuf_iterator<char>类型的默认构造对象。

std::vector<unsigned char> barray(std::istreambuf_iterator<char>(input), {});

相同
std::vector<unsigned char> barray{std::istreambuf_iterator<char>{input},
                                  std::istreambuf_iterator<char>{}};