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

Dan*_*Dan 1 c++ iterator istream-iterator

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

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

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

template< class InputIt >
vector( InputIt first, InputIt last,
        const Allocator& alloc = Allocator() );
Run Code Online (Sandbox Code Playgroud)

因此,{}对应于last

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

R S*_*ahu 5

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

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

std::vector<unsigned char> barray(std::istreambuf_iterator<char>(input), {});
Run Code Online (Sandbox Code Playgroud)

是相同的

std::vector<unsigned char> barray{std::istreambuf_iterator<char>{input},
                                  std::istreambuf_iterator<char>{}};
Run Code Online (Sandbox Code Playgroud)