初始化容器
2023年12月23日 2023年12月23日
默认初始化容器
容器为空
array元素的个数在C部分给出. 元素执行默认初始化
1C c;
拷贝初始化
使用一个容器初始化另一个容器
要求两者容器类型一致,元素类型一致
array要求元素个数一致
1C c1 = c2; 2 3C c1(c2); // 直接初始化: 匹配拷贝构造函数
1// g++ file.cpp -std=c++11 2 3list<string> authors {"Milton", "Shakespeare", "Austen"}; 4vector<const char *> articles = {"a", "an", "the"}; 5 6list<string> list2 = authors; // 正确 7vector<const char *> vec2(articles); // 正确 8 9vector<string> words(articles); // 错误: 元素类型不一致 10deque<string> autoList(authors); // 错误: 容器类型不一致
列表初始化
使用列表初始化容器
二者元素类型相容即可
array要求列表中元素的个数不大于数组的大小; 未给出的部分执行值初始化
1C c{a, b, c...}; // 列表初始化 2 3C c = {a, b, c...};
1list<string> authors {"Milton", "Shakespeare", "Austen"}; 2vector<const char *> articles = {"a", "an", "the"};
使用迭代器范围初始化
将[b, e)包含的元素拷贝到容器
二者类型相容即可
array不支持
1C c(b, e);
1vector<const char *> articles = {"a", "an", "the"}; 2 3forward_list<string> words(articles.begin(), articles.end());