六一的部落格


关关难过关关过,前路漫漫亦灿灿。




默认初始化容器

容器为空

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());

初始化容器



默认初始化容器

容器为空

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());