在 std::vector 构造函数中使用“{}”作为结束迭代器
Use of '{}' as end iterator in std::vector constructor
一种读取文件并将其作为字节数组放入向量的方法是:
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
。
{}
到底是什么?它的行为像 null/empty 迭代器吗?
Thus, the {} corresponds to last.
What is exactly {}? Is it acting like a null/empty iterator?
这是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>{}};
一种读取文件并将其作为字节数组放入向量的方法是:
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
。
{}
到底是什么?它的行为像 null/empty 迭代器吗?
Thus, the {} corresponds to last.
What is exactly {}? Is it acting like a null/empty iterator?
这是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>{}};