专题--顺序容器操作方法
1 /*顺序容器操作*/
2
3 int main()
4 {
5 /*c.size()与c.max_size()*/
6 list<int> ls={0,1,2,3,4};
7 cout<<ls.size()<<endl;
8 cout<<ls.max_size()<<endl;
9
10 /*列表初始化*/
11 vector<int> vc{0,1,2,3,4};
12 cout<<vc.empty()<<endl;
13
14 /*将一个容器初始化为另一个容器的拷贝*/
15 vector<const char*> articles={"a","an"};
16 //错误,容器类型不一致
17 //list<string> words(articles);
18 //正确,拷贝由一个迭代器对指定的元素范围时,不要求容器类型是相同的
19 list<string> words(articles.begin(),articles.end());
20
21 /*标准库array<T,10>,具有固定大小*/
22 //剩余元素值初始化为0
23 array<int,5> digits={0,1,2};
24 //区别于普通数组:可以拷贝或赋值。只要数组类型(元素类型和大小)匹配就合法。
25 //array<int,10> copy=digits; //错误,大小必须一致,大小时array类型的一部分
26 array<int,5> copy=digits;
27 for(auto mem:copy)
28 cout<<mem<<" ";
29 cout<<endl;
30
31 /*swap(c1,c2):交换操作。要求c1和c2具有相同的类型*/
32 vector<int> vc1{5,6,7,8,9};
33 auto it=vc1.begin();
34 cout<<*it<<endl; //输出5
35 //swap()只交换了两个容器的内部数据结构,指向容器的迭代器、引用和指针在swap()操作后都不会失效。
36 swap(vc1,vc);
37 cout<<*it<<endl; //输出5
38
39 /*c1.assign(b,e):替换操作。*/
40 vc1.assign(ls.begin(),ls.end());
41 vc1.assign({10,11,12});
42 vc1.assign(10,1);
43
44 return 0;
45 }