STL vector的默认构造函数
default constructor of stl vector
默认构造函数的签名是
explicit vector (const allocator_type& alloc = allocator_type());
怎么读?为什么不加
前缀呢?template <class ....>
第一个也是唯一一个参数
const allocator_type& alloc = allocator_type()
的意思吗?
仍然是容器类,它们的前缀都是template <class ...>
如果没有模板指令,它如何定义vector的每个元素所使用的类型?
谁能展示一个使用默认方法的例子?
为什么不加
template <class...>
前缀?
因为它在vector
类模板的定义中。在类模板中,不需要指定每个成员也是模板。向成员添加template
规范将为其提供除了类参数之外的额外模板参数,这些参数对于此构造函数来说是不需要的。
第一个也是唯一一个参数是什么意思?
这是一个可选参数,可用于提供自定义内存分配器,以便对vector使用内存的方式进行更多控制。通常,您会忽略该参数并获取默认值。默认值是vector<T>::allocator_type
的一个实例,它是std::allocator<T>
的别名。这将使用全局new
和delete
操作符从自由存储区分配内存。
相关文章:
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 初始化具有非默认构造函数的std::数组项的更好方法
- 具有默认模板类型的默认构造函数的类型推导
- 如何使用非默认构造函数实例化模板化类
- 为什么不调用移动构造函数?(默认情况下只有构造器,没有别的)
- 有没有一种代码密度较低的方法来使用非默认构造函数初始化数组?
- 声明没有默认构造函数的字段
- 基类中的默认析构函数禁用子类中的移动构造函数(如果有成员)
- 没有默认构造函数作为模板参数的自定义比较器
- C++17 没有默认构造函数的地图放置(私有默认构造函数)
- 使用移动调用对等构造函数unique_ptr默认构造函数
- C++复制构造函数和默认构造函数
- 将向量从 N1 缩小到 N2 项,而不触发默认构造函数并仅使用 move 语义
- 构造函数默认公共和私有变量
- 类模板构造函数默认参数
- 构造函数默认参数
- C++模板构造函数默认参数
- 在c++中设置构造函数默认值
- c++构造函数默认参数
- C++构造函数默认值头文件