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

C++进阶④:优先级队列存pair,根据pair.first大小建立先后次、赋值语句可以当做bool类型使用、非非a、map的count方法、map的初始化,[]和at/find区别

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

C++进阶④:优先级队列存pair,根据pair.first大小建立先后次、赋值语句可以当做bool类型使用、非非a、map的count方法、map的初始化,[]和at/find区别

1 优先级队列存pair,根据pair.first大小建立先后次序

priority_queue存pair,大顶堆根据pair.first判断大小,

2 赋值语句可以当做bool类型使用

当赋值后的变量值不为0,就将该语句视作true。

int a = 3;
if(a += 3) 可以执行
if(a -= 3) 不能执行
if(a = 100) 可以执行
if(a = 0) 不能执行
3 !!a

!!符号可以把不等于0的数都变成true,放在数组[]括号里可以当作1使用。
!!实现了

int main() {
    int a[3] = { 1,2,3 };
    a[!!100] == a[1] == 2;
    a[!!0] == a[0] == 1;   
    a[!!-1] == a[1] == 2;
    return 0;
}
4 map/unordered_map的count方法

map和set两种容器的底层结构都是红黑树,所以容器中不会出现相同的元素,因此count()的结果只能为0和1,可以以此来判断键值元素是否存在(当然也可以使用find()方法判断键值是否存在)。

5 map的初始化方法

初始化
map内部都是pair类型的元素
1.直接赋值法

    map m1;
    m1["def"] = 2;

2.用insert添加

    map m2;
    m2.insert({ "abc", 1 });    //使用这种就可以了
    //其他形式和方式
    m2.insert(make_pair(string("def"), 2));
    m2.insert(pair(string("ghi"), 3));

3 列表初始化,注意这个“=”号,和向量初始化不一样。

    map m3 = {
    {"string",1}, {"sec",2}, {"trd",3}
    };
 
    map m4 = {
    {"first","second"}, {"third","fourth"},
    {"fifth","sixth"}, {"begin","end"}
    };
6 map、unordered_map的[],at,find区别。

如果使用[]目前不属于map一部分的索引操作符访问某个键,则会自动为您添加一个键。这是一个巨大的警告,并考虑到这一点。出于这个原因,我更喜欢使用索引操作符[]进行设置和.find()/ .at()查找。

at(key) 返回value
find(key) 返回指向key的迭代器。
[key] 返回value

7 map和unordered_map的区别。

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

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

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