gpt4 book ai didi

c++ - 为什么 std::vector 的构造函数接口(interface)用 C++11 改变了?

转载 作者:IT老高 更新时间:2023-10-28 13:02:47 25 4
gpt4 key购买 nike

为什么新标准删除了默认参数?我经常构造一个这样的 vector 变量:std::vector<my_pod_struct> buf(100) .我想我会在使用 C++11 编译器时遇到编译器错误。

explicit vector( size_type count,
const T& value = T(), /* until C++11 */
const Allocator& alloc = Allocator());
vector( size_type count,
const T& value, /* since C++11 */
const Allocator& alloc = Allocator());

最佳答案

之前,当你写 std::vector<T> buf(100);你会得到一个T默认构造,然后该实例将被复制到 vector 中的一百个槽中。

现在,当你写 std::vector<T> buf(100); ,它将使用另一个构造函数:explicit vector( size_type count ); .这将默认构造一百个 T s。这是一个细微的差别,但很重要。

新的单参数构造函数不需要类型 T是可复制的。这很重要,因为现在类型可以移动且不可复制。

关于c++ - 为什么 std::vector 的构造函数接口(interface)用 C++11 改变了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8939320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com