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

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

2013-04-11 12:08 627 查看
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<操作符来比较元素中的优先级。

//在重载”<”时,最好不要重载”>”,可能会发生编译错误
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐