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用法:
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<操作符来比较元素中的优先级。
//在重载”<”时,最好不要重载”>”,可能会发生编译错误
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<操作符来比较元素中的优先级。
//在重载”<”时,最好不要重载”>”,可能会发生编译错误
相关文章推荐
- stl 顺序容器适配器之stack, priority_queue, queue用法
- stl之适配器容器——stack, queue, priority_queue
- C++的STL容器之容器适配器:stack、queue、priority_queue
- C++之STL(十一):容器适配器(stack、 queue 、priority_queue)源码浅析与使用示例
- stl 顺序容器vector(priority_queue),顺序容器List,顺序容器deque(queue, stack)详解
- STL 笔记(三) 容器适配器 stack、queue、priority_queue
- STL 笔记(三) 容器适配器 stack、queue、priority_queue
- STL--容器适配器(queue、priority_queue、stack)
- STL容器用法速查表:list,vector,stack,queue,deque,priority_queue,set,map
- 从零开始学C++之STL(十一):容器适配器(stack、 queue 、priority_queue)源码浅析与使用示例
- STL容器用法速查表:list,vector,stack,queue,deque,priority_queue,set,map
- STL之容器适配器:stack,queue , priority_queue
- stl 顺序容器vector(priority_queue),顺序容器List,顺序容器deque(queue, stack)详解
- C++语法基础--顺序容器(五)--容器适配器-- queue,priority_queue,stack
- 从零开始学C++之STL(十一):容器适配器(stack、 queue 、priority_queue)源码浅析与使用示例
- Chapter 9.容器适配器stack、queue、priority_queue
- 容器适配器(stack、 queue 、priority_queue)源码浅析与使用示例
- 容器适配器(stack,queue,priority_queue)
- STL容器-- queue and priority_queue 用法
- STL常用容器用法之——queue和priority_queue