栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

map、queue、priority

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

map、queue、priority

一、map(映射)

常用函数:

#include 
#include 
using namespace std;
int main(){
mapa;                //定义
a['c']=11;
a['c']=22;                     //map中的键是唯一的('c'为键,22为值)
a['z']=55;
a['b']=76;
a['n']=41;
a['k']=0;
cout<::iterator it=a.begin();   //迭代器
for(it;it!=a.end();it++)          //通过的迭代器访问
    cout<first<<" "<second<::iterator lz=a.begin();lz!=a.end();lz++)
    cout<first<<" "<second< 

 输出

注:1.如果是字符串到整型的映射,必须使用string而不能用char数组。

        2.map的键和值可以是STL容器,如:  map,int>mp;

二、queue(队列)

常用函数:

#include 
#include 
using namespace std;
int main(){
queuea;      //定义
for(int i=1;i<=5;i++)
    a.push(i);        //元素入队
cout<

输出

 

 注意:在使用front()和back()前,必须用empty()判断队列是否为空,否则可能会出现错误。

三、priority_queue(优先队列)

1、常用函数与queue的push()、empty()、size()相同,两者函数pop()有点不同。

优先队列没有front()和back(),但有函数top()

#include 
#include 
using namespace std;
int main(){
priority_queuea;
for(int i=1;i<=5;i++)
    a.push(i);
if(a.empty()==true){
    cout<<"Empty"< 

输出

5

4

注意:在优先队列中,队首元素一定是当前队列中优先级最高的那一个。

2、priority_queue内优先级

(1)默认数字(字典序)越大优先级越高。

priority_queuea;
priority_queue,less >a;

 以上两种定义是一样的。

可以通过以下定义使数字越小优先级越大

priority_queue,greater >a;

(2)对于结构体来说,可通过与sort差不多的方式来实现

#include 
#include 
using namespace std;
struct zz{
string n;int p;
}r1,r2,r3;
struct cmp{
bool operator ()(zz a,zz b){
return a.p>b.p;
}
};
int main(){
priority_queue,cmp> a;
r1.n="No.1";r1.p=6;
r2.n="No.2";r2.p=4;
r3.n="No.3";r3.p=1;
a.push(r1);
a.push(r2);
a.push(r3);
if(a.empty()==true)cout<<"Empty"< 

输出

No.3  1

四、stack(栈)

常用函数:

#include 
#include 
using namespace std;
int main(){
stack a;
for(int i=1;i<=5;i++)
    a.push(i);              //入栈
if(a.empty()==true)       //检测stact是否为空
    cout<<"Empty"< 

输出

5

4

五、pair

可以看作一个内部有两个元素的结构体。

常见用法:

#include 
#include 
using namespace std;
int main(){
paira('s',7);
pairb(1,8);
pairc(1,6);
if(b>c)cout<<"b>c"<d;
d.insert(a);
d.insert(make_pair('a',2));
d.insert(pair('j',0));     //pair可作为map的键值对来进行插入
for(map::iterator it=d.begin();it!=d.end();it++)
    cout<first<<" "<second< 

输出

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/723581.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号