您的位置:首页 > 产品设计 > UI/UE

stl 顺序容器适配器之stack, priority_queue, queue用法

2017-04-05 00:00 645 查看
stack用法:

stack也是程序设计中常常用到的数据容器,STL为我们提供了stack的实现,因此在使用stack时必须包含头文件<stack>,并使用统一命名空间。

1.声明一个stack

stack<int> s1;

stack<string> s2;

stack模板类需要2个模板参数,一个为元素类型,一个为容器类型,但是只有元素类型是必要的,在容器类型缺省时,默认为deque。

2.stack中的操作

stack<int> s;

s.push(x) 无返回值,将元素x压栈

s.pop(); 退栈,无返回值

s.top(); 取栈顶元素,返回栈顶元素

s.empty(); 判断栈是否为空,如果是空,返回1,否则返回0

s.size(); 返回栈中元素的个数

在栈中没有提供清空操作的函数,但是可以间接地实现清空栈,

while(!s.empty())

{

s.pop();

}

queue用法:

入队,如例:q.push(x); 将x接到队列的末端。

出队,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。

访问队首元素,如例:q.front(),即最早被压入队列的元素。

访问队尾元素,如例:q.back(),即最后被压入队列的元素。

判断队列空,如例:q.empty(),当队列空时,返回true。

访问队列中的元素个数,如例:q.size()

清空容器:while(!que.empty())que.pop();

priority_queue用法:

基本操作:

empty() 如果队列为空返回真

pop() 删除对顶元素

push() 加入一个元素

size() 返回优先队列中拥有的元素个数

top() 返回优先队列对顶元素

1、普通方法:

priority_queue<int>q;
//通过操作,按照元素从大到小的顺序出队


2、自定义优先级:

struct cmp
{
operator bool ()(int x, int y)
{
return x > y; // x小的优先级高
//也可以写成其他方式,如: return p[x] > p[y];表示p[i]小的优先级高
}
};
priority_queue<int, vector<int>, cmp>q;//定义方法
//其中,第二个参数为容器类型。第三个参数为比较函数。


3、结构体声明方式:

struct node
{
int x, y;
friend bool operator < (node a, node b)
{
return a.x > b.x; //结构体中,x小的优先级高
}
};
priority_queue<node>q;//定义方法
//在该结构中,y为值, x为优先级。
//通过自定义operator<操作符来比较元素中的优先级。
//在重载”<”时,最好不要重载”>”,可能会发生编译错误
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐