c++ - 为什么 std::vector 构造函数通过复制接受初始化列表?
问题描述
当我试图理解现代 C++ 中不同类型的初始化时,我遇到了std::vector<T>
初始化列表的初始化。为了允许使用初始化器列表数据结构进行初始化,例如std::vector<T>
应该有一个接受初始化器作为参数的构造函数。我观察到的是,std::vector<T>
通过副本接受初始化列表而不是作为参考,当我们有大量元素时,通过副本接受可能非常昂贵。为什么初始化器列表将其作为副本而不是参考有什么特别的原因吗?
来自https://en.cppreference.com/w/cpp/container/vector/vector
vector( std::initializer_list<T> init, … ); (9) (since C++11)
为什么不?
vector( std::initializer_list<T>& init, … );
解决方案
推荐阅读
- android - 在某些设备上的缩放动画期间,有时文本会在 TextView 中消失
- android - 在Android中的小时间间隔内防止触摸
- types - 用于浮点数或复杂输入的 rust-ndarray 函数
- reactjs - 如何在 React 17 中使用反应测试库模拟表格数据?
- excel - 将 Excel 表连接到 Power BI 服务数据集
- javascript - 将 CSS 样式表与 JS 模块相结合
- riscv - 创建自定义 RISC-V 指令时无法识别的操作码
- azure - Databricks SQL 分析
- go - 如何使用反射在go中创建接口值类型的对象
- node.js - 如何阅读已使用节点保存到 s3 文件的电子邮件中的 pdf 附件