vector
vector可以用来表示一个不定长度的数组,它是一种序列容器。它的大小是可以动态改变的。当新元素插入容器时,vector不会每次都重新分配大小。与其他动态序列容器相比,vector在访问元素时更加高效,在末尾添加和删除元素相对高效。
#include<vector> //包含头文件
vector<int> vec; //声明一个int型向量
vector<int> vec(5);//声明一个初始大小为5的int向量
vector<int> vec(10,1);//声明一个初始大小为10且值均为1的向量
vec.size();//返回向量大小(容量)
vec.max_size();//返回向量的最大容量
vec.capacity();//向量真实大小
vec.empty();//判断向量是否为空
vec.push_back();//向量末尾插入元素
vec.pop_back();//删除向量末尾元素
vec.insert(vec.begin()+i,a);//在第i+1个元素前面插入a,通过迭代器操作
vec.erase(vec.begin()+i);//删除第i+1个元素,通过迭代器操作
vec.clear();//清除向量中所有元素
list
list是一个双向链表,它有一个重要性质:插入操作和删除操作都不会造成原有的list迭代器失效,每次插入或删除一个元素就配置或释放一个元素空间。也就是说,对于任何位置的元素插入或删除,list永远是常数时间
#include<list>
list<int> list1;//定义一个int类型的列表
list<int> list1(3);//创建一个初始大小为3的int型列表
list<int> list1(3,2);//建立一个含3个元素的列表,值都是2
list<int> list2(list1);//建立一个列表list2,它是list1的拷贝
//插入函数类似于vector
list1.push_back();//在列表尾部插入元素
list1.push_front();//在开始位置增加一个元素
list1.pop_back();//删除末尾元素
list1.pop_front();//删除第一个元素
list1.front();//返回列表list1的第一个元素
list1.back();//返回列表list1的最后一个元素
list1.empty();//判断列表是否为空
list1.size();//返回列表list1中实际元素个数
list1.clear();//清除列表中所有元素
list1.remove(2);//删除列表中值为2的所有元素(可以是其他类型)
list1.insert(list1.begin()+i,a); //在第i+1个元素前面插入a,通过迭代器操作
list1.erase(list1.begin()+i);//删除第i+1个元素,通过迭代器操作
//用迭代器遍历元素
#include<algorithm>
swap(list1,list2);//将list1和list2交换
list1.merge(list2);//合并2个有序的列表,从新放到list1中,释放list2
list1.splice(list1.begin(),list2);//将list2连接到list1的begin()位置
list1.reverse();//反转列表
list1.sort();//升序排序
stack
栈是一个线性表,插入和删除只在表的一端进行。这一端称为栈顶(Stack Top),另一端则为栈底(Stack Bottom)。堆栈的元素插入称为入栈,元素的删除称为出栈。
#include<stack>
stack<int> s1;//定义一个类型为int型的栈
s.push(i);//入栈操作,在栈顶增加元素
s.pop();//出栈,移除栈顶元素
s.top();//取栈顶元素,返回栈顶元素的值
s.empty();//判断栈是否为空,若是则返回一
s.size();//返回栈中元素的个数
//清空栈中元素
while(!s.empty())
{s.pop();}
queue
队列中的数据元素遵循“先进先出”(First In First Out)的原则,简称FIFO结构;在队尾添加元素,在队头删除元素。
注意!!!那么我们如何判断队列是空队列还是已满呢?
a、栈空: 队首标志=队尾标志时,表示栈空。
b、栈满 : 队尾+1 = 队首时,表示栈满。
#include<queue>
queue<int> q1;//定义一个类型为int的队列
q1.push(x);//将x连接到队列的尾端
q1.pop();//弹出队列的第一个元素,但并不返回它
q1.front();//返回队首元素
q1.back();//返回队尾元素
q1.empty();//判断队列是否为空,若是返回1
q1.size();//返回队列长度