从计数和元素值初始化 std::vector 与副本
Initializing a std::vector from a count and an element value with copies?
vector<string> vec(10, string(10, 'a'));
我的问题是关于string(10, 'a')
:
- 它是否返回匿名变量?
- 当初始化语句结束时,变量将被清除吗?
- 它会被复制到向量吗?
- 与 c++11 有什么不同(此时(?
它是否返回匿名变量?
不。它返回一个临时对象,该对象不是变量定义(§3.1/6 [基本](:
变量是通过声明引用而不是 非静态数据成员或对象的数据成员。变量的名称表示 引用或对象。
来源:C++11 工作草案 n3337
当初始化语句结束时,变量将被清除吗?
不,不会。它没有名字,在这一点上它已经被摧毁了。
它会被复制到向量吗?
是的,临时对象将被复制到向量中,然后销毁。这在原则上发生;在实践中,编译器可以优化临时对象的创建、复制和销毁,只要这样做不会影响可观察的行为。
与 c++11 有什么不同(此时(?
我不能确定,但我不记得 C++98、C++03 和 C++11 在这件事上有什么具体区别。
相关文章:
- 使用std::vector的OpenCL矩阵乘法
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- std::vector的包装器,使数组的结构看起来像结构的数组
- 编译器如何区分std::vector的构造函数
- 使用 pqxx 将 std::vector 存储在 postgresql 中,并从数据库中检索它
- 在std::vector上存储带有模板的类实例
- 在main()之外初始化std::vector会导致性能下降(多线程)
- 为什么std::vector比数组慢
- std::vector::迭代器是否可以合法地作为指针
- 如何将二进制格式的 C++ 对象的 std::vector 保存到磁盘?
- 为什么std::vector和std::valarray初始化构造函数不同
- ";结果类型必须是可从输入范围的值类型""构造的;创建std::vector时
- 在没有未定义行为的情况下实现类似std::vector的容器
- 如何调整 std::vector of Eigen::MatrixXd 的大小
- 使用 std::vector::reverse_iterator 将 int 序列化为字节向量?
- 如何将AERT_Allocate与 std:vector 一起使用
- 推导 std::vector::back() 的返回类型
- 如何将原始字节附加到 std::vector?
- std::vector 没有重载函数的实例与参数列表匹配
- 如果 KEY 是 std::list 或 std::vector 而不是值,那么 std::map 的默认行为是什么?