gpt4 book ai didi

c++ - 为什么 C++11 中没有 vector(size_type n, const Allocator& alloc)?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:10:07 25 4
gpt4 key购买 nike

在 C++11 中,std::vector 具有构造函数 vector(size_type n),它将默认构造 n 项,可以与 default 一起使用可构造的、可移动的、不可复制的类。

但是,与所有其他 vector 构造函数不同,没有采用分配器的变体,我已采用以下方法:

// Foo is default constructible and moveable, but not copyable
const int n = 10; // Want 10 default constructed Foos
std::vector<Foo, CustomAllocator> foos(allocator);
foos.reserve(n);
for (int i = 0; i < n; ++i)
foos.emplace_back();

有没有更好的方法来实现这一点?标准中省略了 vector(size_type n, const Allocator& alloc) 是否有特定原因?

最佳答案

想了想,也未必是缺陷。

allocator_typevalue_type 有可能是相同类型。在那种情况下,vector(3, alloc) 会调用哪个函数?是采用默认值复制初始化到所有元素的构造函数,还是采用大小和分配器的构造函数?这是模棱两可的,因此是一个编译错误。

关于c++ - 为什么 C++11 中没有 vector(size_type n, const Allocator& alloc)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9422352/

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