如果我想从类型"T"定义元素的容器(来自 STL),那么"T"必须使用默认构造函数?

If I want to define a container (from the STL) of elements from a type "T" so "T" must a default constructor?

本文关键字:那么 默认 STL 构造函数 类型 定义 元素 如果 来自      更新时间:2023-10-16

我读到,如果我想从类型T定义元素数组,那么class T必须是默认的c'tor(这是正确的,是吗?(。

但是(从STL(定义T类型的元素的容器呢?

在这两种情况下都不需要默认构造函数。

#include <iostream>
#include <vector>
struct A
{
int x;
A(int x) : x(x) {}
};
int main()
{
A arr[3] {A(0), A(1), A(2)}; // An array
std::vector<A> vec; // A std container
vec.push_back(A(0));
vec.push_back(A(1));
vec.push_back(A(2));
}

不过,对于某些容器,缺少默认构造函数会禁用某些操作,如std::mapstd::unordered_map中的operator[]

相关文章: