C++ Primer 第九章 顺序容器
由于书籍上写的已经很经典了,故大部分用图片的形式来阐述概念,代码纯手打进行验证。
1.顺序容器类型:vector、deque、list、forword_list、array、string。
2.顺序容器概述:
3.小结
4. 验证代码如下:
1 #include <iostream> 2 #include <vector> 3 #include <array> 4 #include <string> 5 #include <list> 6 using namespace std; 7 8 int main() 9 { 10 //vector <int> Vec = {0,1,2,3,4,5,6,7,8,9};//vs2010 显示此初始化错误,但书中正确; 11 vector <int> Vec(10,1); 12 cout<<"vector元素:"<< Vec[1] <<endl; 13 14 //标准库array具有固定大小 15 array <int,10> Arr = {0,1,2,3,4,5,6,7,8,9};//array容器必须指定大小; 16 array <int,10> Arr1 = {12};//Arr1的元素为12,0,0,...,0; 17 Arr = Arr1;//将Arr元素替换为Arr1,两者必须类型相同; 18 Arr.swap(Arr1);//一定程度上,同上式功能,swap为交换成员,交换两者元素; 19 swap(Arr,Arr1);//交换两者元素,速度比拷贝快得多; 20 21 //swap操作交换必须为两个相同类型容器的内容,大小无关; 22 //下面交换说明为:交换后svec1为有24个元素的string类型的容器; 23 //svec2为10个的string类型的容器; 24 vector<string> svec1(10); 25 vector<string> svec2(24); 26 swap(svec1,svec2); 27 28 //添加元素 29 //采用array和forward_list之外,每个顺序容器(包括string类型)都支持push_back 30 //下面每次读取一个string到word中,然后追加到容器尾部 31 string word; 32 while(cin >> word) 33 svec1.push_back(word); 34 35 //push_front 此操作将元素插入到容器头部 vector不支持 36 list <int> ilist; 37 // 将元素添加到ilist的开头,将0,1,2,3添加到ilist开头 38 for (int i = 0; i!= 4;++i) 39 ilist.push_front(i); 40 41 // 在容器中的特定位置添加元素 使用insert 42 //值得一提的是 insert是插入到指定位置之前的位置处 43 vector<string> svec; 44 list <string> slist; 45 //等价于调用slist.push_front("Hello") 46 slist.insert(slist.begin(),"Hello"); 47 //vector不支持push_front 用insert实现 48 svec.insert(svec.begin(),"Hello"); 49 //还可插入多个值 插入10个“a” 50 svec.insert(svec.end(),10,"a"); 51 52 //在容器中访问元素的成员函数:front back 下标和at 53 //删除元素 erase 以及pop_back()删除尾元素 pop_front()删除首元素 54 55 //改变容器大小resize srray不支持resize 因为其初始化时大小固定 56 list<int>ilist1(10,42);// 定义10个int类型数据 都为42 57 ilist1.resize(15);// 将5个值为0的元素添加到ilist的末尾 58 ilist1.resize(25,-1);// 将10个值为-1的元素添加到ilist的末尾 59 ilist1.resize(5);// 从ilist末尾删除20个元素 60 61 62 system("pause"); 63 return 0; 64 }
1.// 变幻的大千世界, 浩瀚的知识海洋, 我只是: 一个IT的从业者, 一个知识的记录者, 一个知识的搬运工!////
2.// 文章可能是原创/转载/共享资源/混合整合作品,若有侵权,请联系我处理,谢谢!////