容器适配器:stack、queue、priority_queue
来源:互联网 发布:sql分页查询 编辑:程序博客网 时间:2024/05/17 17:56
#include<iostream>
#include<stack>
#include<vector>
#include<list>
#include <queue>
#include<set>
#include <functional>
#include <iterator>
using namespace std;
int main(){
///////////利用现有的容器,适配成新的容器,如现有的list、vector容器
cout<<"=======stack的用法=============="<<endl;
//stack<int> s1; //ok
//stack<int,vector<int>> s1; //ok
stack<int,list<int>> s1; //ok
for (int i=0;i<5;i++)
{
s1.push(i);
}
/*for (size_t i=0;i<s1.size();i++)
{
cout<<s1.top()<<" ";
s1.pop();
}*///该循环不能循环完
while(!s1.empty()){
cout<<s1.top()<<" ";
s1.pop();//调用的是pop_back()
}
cout<<endl;
/////////////queue的用法////////////////////
cout<<"======queue的用法============"<<endl;
//queue<int> qe; //ok
//queue<int,vector<int>> qe;//error:vector没有pop_front接口
queue<int,list<int>> qe;//ok,list有pop_front接口
for (int i=0;i<5;i++)
{
qe.push(i);
}
while (!qe.empty())
{
cout<<qe.front()<<' ';
qe.pop(); //调用的是pop_front()
}
cout<<endl;
cout<<"========priority_queue优先级队列的用法==============="<<endl;
cout<<"=======priority_queue:以堆的形式存放数据make_heap======="<<endl;
int a[5]={5,3,2,4,1};
//priority_queue<int> pq(a,a+5);//ok,默认的函数对象是less是按照从大到小的优先级顺序输出
priority_queue<int,vector<int>,greater<int>> pq(a,a+5);//ok,按照函数的对象是greater的从小到大优先级顺序输出
while (!pq.empty())
{
cout<<pq.top()<<' '; //
pq.pop();
}
cout<<endl;
cout<<"==make_heap的用法:构建一个二叉堆,二叉堆是一个完全的二叉树,用数组来保存======"<<endl;
int bb[]={4,5,2,1,3};
make_heap(bb,bb+5);//ok,默认构建的是一个最大堆,最大堆是父亲节点比他的孩子节点都要大,输出5、4、2、1、3
//make_heap(bb,bb+5,greater<int>());//ok,构建的是一个最小堆,最大堆是父亲节点比他的孩子节点都要小:输出 1、3、2、5、4
copy(bb,bb+5,ostream_iterator<int>(cout," "));
cout<<endl;
//sort(bb,bb+5);//ok,插入排序:_Insertion_sort
sort_heap(bb,bb+5);//ok,堆排序
copy(bb,bb+5,ostream_iterator<int>(cout," "));
cout<<endl;
cout<<"======set容器的用法==========="<<endl;
set<int> st;//ok,不允许关键码重复
st.insert(4);
st.insert(5);
st.insert(3);
st.insert(3);
st.insert(2);
for (set<int>::const_iterator it=st.begin();it!=st.end();++it)
{
cout<<*it<<' ';
}
cout<<endl;
cout<<"==========multiset容器的用法=============="<<endl;
multiset<int> mst;//ok,允许关键码重复
mst.insert(4);
mst.insert(5);
mst.insert(3);
mst.insert(3);
mst.insert(2);
for (multiset<int>::const_iterator it=mst.begin();it!=mst.end();++it)
{
cout<<*it<<' ';
}
cout<<endl;
cout<<"=======从vector容器中剔除重复的元素============"<<endl;
int cc[]={1,2,3,4,3};
vector<int> v(cc,cc+5);
/*for (vector<int>::iterator it=v.begin();it!=v.end();++it)
{
if (*it==3)
{
v.erase(it);
}else{
cout<<*it<<endl;
}
}*///error:v.erase(it)之后 it变成了悬浮指针
for (vector<int>::iterator it=v.begin();it!=v.end();)
{
if (*it==3)
{
it=v.erase(it);
}else{
cout<<*it<<endl;
++it;
}
}
return 0;
}
- 容器适配器:stack、queue、priority_queue
- STL之容器适配器:stack,queue , priority_queue
- Chapter 9.容器适配器stack、queue、priority_queue
- Chapter 9.容器适配器stack、queue、priority_queue
- 容器适配器(Adapter):stack,queue,priority_queue
- 容器适配器(stack,queue,priority_queue)
- C++容器-4容器适配器stack、queue、priority_queue
- stl 顺序容器适配器之stack, priority_queue, queue用法
- STL 笔记(三) 容器适配器 stack、queue、priority_queue
- STL 笔记(三) 容器适配器 stack、queue、priority_queue
- stl之适配器容器——stack, queue, priority_queue
- 八、STL中的容器适配器stack、queue、priority_queue
- C++语法基础--顺序容器(五)--容器适配器-- queue,priority_queue,stack
- C++:顺序容器及顺序容器适配器(stack、queue、priority_queue)
- C++之STL(十一):容器适配器(stack、 queue 、priority_queue)源码浅析与使用示例
- 9.6容器配适器(stack,queue,priority_queue)
- 从零开始学C++之STL(十一):容器适配器(stack、 queue 、priority_queue)源码浅析与使用示例
- 从零开始学C++之STL(十一):容器适配器(stack、 queue 、priority_queue)源码浅析与使用示例
- C语言中定义结构体的几种方法
- 关于大端模式与小端模式
- 差分约束笔记
- .h跟.c的区别
- EZ-USB开发笔记(五)——中断(下)
- 容器适配器:stack、queue、priority_queue
- EZ-USB开发笔记(六)——CPU外设
- jibx进行xml数据绑定的binging.xml配置
- “五险一金”详解!
- n从1开始,每个操作可以选择对n加1或者对n加倍。若想获得整数2013,最少需要多少个操作
- EZ-USB开发笔记(七)——复位
- 实现商家google地图标注功能
- EZ-USB开发笔记(八)——电源管理
- 二维码