[英]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.