1.vector
- 最基础的线性表容器,本质即为数组
-
定义方法1:vector<type> vector_name
-
创建一个type类型的容器(空)
-
定义方法2:vector<type> vector_name(number)
-
创建一个type类型的容器(已有number个成员,但还没有初始化)
-
定义方法3:vector<type> vector_name(number,val)
-
创建一个type类型的容器(已有number个值为val的成员)
-
定义方法4:vector<type> vector_name(other_vector_name)
-
创建一个与括号内的容器一样的容器(复制)
- 插入方法1:push_back()
- 向数组的最后插入一个数,即添加一个数在数组结尾
- 如原数组
a[0] a[1] a[2] 1 2 3 -
执行a.push_back(4)后,数组变为
a[0] a[1] a[2] a[3] 1 2 3 4 - 插入方法2:insert()
- 向数组的特定位置插入一个或多个数
- vector_name.insert(where,number,val)
- 在容器的where位置前面插入number个val
- 或vector_name.insert(where,val)
- 在容器的where位置前面插入一个val
- tip1:where的类型为迭代器,一般我们用【vector_name.begin() + 下标】来表示 如我们要在下vector的a[1]前插入一个4,那么a[1]的值就会被替换为4,然后原本的a[1]与后面的值均会向后移1位.
代码:a[0] a[1] a[2] 1 2 3 a.insert(a.begin() + 1,4);
变为:
a[0] a[1] a[2] a[3] 1 4 2 3 - tip2:insert也可以实现尾插,例如向vector_name的尾添加一个值val
vector_name(vector.end(),val);
- 删除方法1:pop_back()
- 尾删,与push_back相反
- 删除方法2:erase()
- 删除指定位置或指定范围
- vector_name.erase(where)
- 删除where位置的元素
- vector_name.erase(begin_begin,end_where)
- 删除begin_begin到end_where - 1的元素
- tip1:这里的where,begin_where,end_where也都是迭代器,一般用【vector_name.begin() + 下标】来表示
- tip2:删除范围是没有包括end_where的,比如
a[0] a[1] a[2] a[3] a[4] 0 1 2 3 4 执行:
a.erase(a.begin() + 1,a.begin() + 4);
变成:
a[0] a[1] 0 4 可见原本在a.begin() + 4的a[4]的值4并没有被删除
-
删除方法3:clear()
-
显而易见,vector_name.claer();便是将容器vector_name清空.
- 遍历方法:有下标法和迭代器法,但是本人基本不用迭代器法所以没写,有兴趣的可以自己了解
- 下标法:由于我们可以直接用vector_name[下标]来直接访问这个下标对应的元素值,所以只要直到容器中有多少个元素就可以遍历整个容器了,而函数vector_name.size()便可以告诉我们这个容器内有多少个元素.
for(int i = 0;i < vector_name.size();i++)
- 访问方法1:下标法
- 把这个容器当作数组
- 访问方法2:函数法
- vector_name.back()访问最后一个元素
- vector_name.front()访问第一个元素
- tip:在使用函数法前一定要用empty()函数来检查容器是否为空,如果为空再访问就会报错
2.stack
- 栈,遵循先入后出的原则
- 定义:
stack<type> stack_name;
-
常用操作
-
放入栈顶:
stack_name.push(val);
- 访问栈顶元素:
stack_name.top()
-
删除栈顶元素:
stack_name.pop();
- 检查是否为空:
stack_name.empty()
- 返回元素数量 :
stack_name.size()
3.queue
- 队列,遵循先入先出的原则
- 定义:
queue<type> queue_name;
- 插入元素在队列最后:
queue_name.push(val);
- 访问队列第一个元素:
queue_name.front()
- 删除第一个元素:
queue_name.pop();
- 检查是否为空:
queue_name.empty()
- 返回元素数量:
queue_name.size()
结束