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 }
原文地址:https://www.cnblogs.com/ggYYa/p/5903251.html