priority_queue存pair
当赋值后的变量值不为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.直接赋值法
mapm1; m1["def"] = 2;
2.用insert添加
mapm2; m2.insert({ "abc", 1 }); //使用这种就可以了 //其他形式和方式 m2.insert(make_pair(string("def"), 2)); m2.insert(pair (string("ghi"), 3));
3 列表初始化,注意这个“=”号,和向量初始化不一样。
map6 map、unordered_map的[],at,find区别。m3 = { {"string",1}, {"sec",2}, {"trd",3} }; map m4 = { {"first","second"}, {"third","fourth"}, {"fifth","sixth"}, {"begin","end"} };
如果使用[]目前不属于map一部分的索引操作符访问某个键,则会自动为您添加一个键。这是一个巨大的警告,并考虑到这一点。出于这个原因,我更喜欢使用索引操作符[]进行设置和.find()/ .at()查找。
at(key) 返回value
find(key) 返回指向key的迭代器。
[key] 返回value


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