c++ - 在 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
。
究竟是什么{}
?它是否像一个空/空迭代器?
解决方案
因此,{} 对应于最后一个。
{} 到底是什么?它是否像一个空/空迭代器?
它是 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>{}};
推荐阅读
- c# - C#中的列表值返回
- office365 - Word 加载项错误代码 13004
- json - Himotoki vs Swift Codable
- javascript - Javascript 输出为 NaN
- indexing - 为什么 VoltDB 选择红黑树作为索引结构?
- c - 如何在没有 strcmpi() 的情况下创建一个函数来比较不区分大小写的字符串
- wordpress - 将员工姓名、他们的出生日期存储在表格中,并以当前日期显示姓名
- visual-studio-2015 - CMake - 在 Visual Studio 中确定构建类型
- java - 单一资源的 Zuul 路由
- php - 点击图标更新操作