首页 > 解决方案 > 在 std::vector 构造函数中使用“{}”作为结束迭代器

问题描述

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

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

据我了解,std::vector上述代码片段中使用的构造函数是

template< class InputIt >
vector( InputIt first, InputIt last,
        const Allocator& alloc = Allocator() );

因此,{}对应于last

究竟是什么{}?它是否像一个空/空迭代器?

标签: c++iteratoristream-iterator

解决方案


因此,{} 对应于最后一个。
{} 到底是什么?它是否像一个空/空迭代器?

它是 type 的默认构造对象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>{}};

推荐阅读