vector:后部插入/删除,直接访问
声明:vector<int> a;
a.clear()//清空
a.push_back(i)//加入元素i
a.size()//大小
vector<int>::iterator it;//容器指针
a.begin()//第一个元素
a.erase(it+2)//清除第3个元素
下面基本类同
deque:前/后部插入/删除,直接访问
list:双向链表,任意位置插入/删除
set:快速查找,无重复元素 //排好序,源码是用红黑树写的
set.find("str")返回str的地址,然后将set.end()的地址改成str的,然后判断it==set.()?
multiset :快速查找,可有重复元素
map:一对一映射,无重复元素,基于关键字查找 //放入map里的都是排好序的,源码是用红黑树写的
multimap :一对一映射,可有重复元素,基于关键字查找
stack:LIFO
empty() //堆栈为空则返回真
pop() //移除栈顶元素(不会返回栈顶元素的值)
push() //在栈顶增加元素
size() //返回栈中元素数目
top()// 返回栈顶元素
queue:FIFO
empty() 队列为空则返回真
pop() 移除队首元素
push() 在队尾增加元素
size() 返回队列元素数目
front() 返回队首元素
back()返回队尾元素
priority_queue:优先级高的元素先出
struct cmp
{
bool operator()(int x, int y)
{
return x > y; // x小的优先级高
}
};
priority_queue<int, vector<int>, cmp>q;//定义方法
//其中,第二个参数为容器类型。第三个参数为比较函数。
struct node
{
int x, y;
friend bool operator< (node a, node b)
{
return a.x > b.x; //结构体中,x小的优先级高
}
};