为什么C 11中没有向量(size_type n,const Allocator&alloc)?

在C 11中,std :: vector具有构造函数向量(size_type n),它将默认构造n个项目,这些项目可以与默认的可构造,可移动,不可复制的类一起使用.

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

// 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_type和value_type可能是相同的类型.在那种情况下,哪个函数会向量(3,alloc)调用?采用默认值进行复制初始化为所有元素的构造函数,或者采用大小和分配器的构造函数?这是模棱两可的,因此编译错误.

相关文章

首先GDB是类unix系统下一个优秀的调试工具, 当然作为debug代...
1. C语言定义1个数组的时候, 必须同时指定它的长度.例如:int...
C++的auto关键字在C+⬑新标准出来之前基本...
const关键字是用于定义一个不该被改变的对象,它的作用是告诉...
文章浏览阅读315次。之前用C语言编过链表,这几天突然想用C+...
文章浏览阅读219次。碰到问题就要记录下来,防止遗忘吧。文章...