1.STL通用函数
empty() 堆栈为空则返回真
size() 返回栈中元素数目
c1.swap(c2) 交换两个容器中的元素
max_size() 返回容器最大容量
1.stack
empty() 堆栈为空则返回真
pop() 移除栈顶元素
push() 在栈顶增加元素
size() 返回栈中元素数目
top() 返回栈顶元素
2.vector
at() 返回指定位置的元素
back() 返回最末一个元素
begin() 返回第一个元素的迭代器
clear() 清空所有元素
empty() 判断Vector是否为空(返回true时为空)
end() 返回最末元素的迭代器(译注:实指向最末元素的下一个位置)
erase() 删除指定元素
front() 返回第一个元素
insert() 插入元素到Vector中
pop_back() 移除最后一个元素
push_back() 在Vector最后添加一个元素
size() 返回Vector元素数量的大小
swap() 交换两个Vector
3.set
集合(Set)是一种包含已排序对象的关联容器
begin()返回指向第一个元素的迭代器
clear()清除所有元素
count()返回某个值元素的个数
empty()如果集合为空,返回true
end()返回指向最后一个元素的迭代器
erase()删除集合中的元素
find()返回一个指向被查找到元素的迭代器
insert()在集合中插入元素
size()集合中元素的数目
swap()交换两个集合变量
由于集合不能像数组那样用数组下标直接访问,因此需要用特殊手段来使用:
迭代器
set s;
set::iterator ite;
for (ite = s.begin(); ite != s.end(); ite++) printf(“%d”, *ite);
迭代器跟指针的使用方法类似,唯一需要注意的一点是,s.end()指向的是集合中的最后一个元素,但是并不是你插入集合的元素,也就是说集合在你插入的元素之外还自带有一个末元素,作为集合边缘的标记。
4.queue
back() 返回最后一个元素
empty() 如果队列空则返回真
front() 返回第一个元素
pop() 删除第一个元素
push() 在末尾加入一个元素
size() 返回队列中元素的个数
5.Priority Queues(优先队列)
empty() 如果优先队列为空,则返回真
pop() 删除第一个元素
push() 加入一个元素
size() 返回优先队列中拥有的元素的个数
top() 返回优先队列中有最高优先级的元素
优先队列是稍微复杂一些同时也是十分的重点:
对于常规的数据类型,int, double, string等,定义方法如下:
默认的priority_queue pq; 是一个越大的整数优先级越高的优先队列。
而priority_queue
struct Edge{
int start,end;
double weight;
Edge(int start,int end,int weight):start(start),end(end),weight(weight){};
};
bool operator < (Edge a,Edge b)
{
return a.weight < b.weight;//此处注意,希望优先级越小的规则返回true,
//比如希望从大到小排序,则小于优先级低,返回a