简体   繁体   English

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

[英]Use of '{}' as end iterator in std::vector constructor

A way for reading a file and put it as a byte array into a vector would be:读取文件并将其作为字节数组放入向量的一种方法是:

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

As far as I understand, the constructor used for std::vector in the above code snippet is据我了解,上述代码片段中用于std::vector的构造函数是

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

Thus, the {} corresponds to last .因此, {}对应于last

What is exactly {} ? {}到底是什么? Is it acting like a null/empty iterator?它是否像一个空/空迭代器?

Thus, the {} corresponds to last.因此,{} 对应于最后一个。
What is exactly {}? {} 到底是什么? Is it acting like a null/empty iterator?它是否像一个空/空迭代器?

It's a default constructed object of type std::istreambuf_iterator<char> .这是一个默认构造的 object 类型的std::istreambuf_iterator<char>

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

is the same as是相同的

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM