map和pair( 二元结构体)有关知识点: map(含pair)的二维表示和迭代器遍历(大佬学长总结)
https://blog.youkuaiyun.com/ljw_study_in_优快云/article/details/104355672
其中map嵌套map的时候要想输出元素进行了两重遍历比较难理解
map的实质是从key到value的映射!!!
key是不可以改变的
map的常见操作:
1.map的定义:map<数据类型1,数据类型2>name;
2.map的访问:name[key] 或者通过定义以一个迭代器来访问!
3.begin() 返回指向map头部的迭代器
clear() 删除所有元素
count() 返回指定元素出现的次数
empty() 判断是否为空
end() 返回指向map末尾的迭代器
equal_range() 返回特殊条目的迭代器对
erase() 删除一个元素
find() 查找一个元素
get_allocator() 返回map的配置器
insert() 插入元素
key_comp() 返回比较元素key的函数
lower_bound() 返回键值>=给定元素的第一个位置
max_size() 返回可以容纳的最大元素个数
rbegin() 返回一个指向map尾部的逆向迭代器
rend() 返回一个指向map头部的逆向迭代器
size() 返回map中元素的个数
swap() 交换两个map
upper_bound() 返回键值>给定元素的第一个位置
value_comp() 返回比较元素value的函数
题目加代码*(大佬所写)
https://blog.youkuaiyun.com/csg999/article/details/104354662
A 题体会: 如果说一个值 i 不等于任何一个key的值的话,那么ma[ i ]=0!!!
C题体会: ma这个关联式容器,可以用来当数组用,从而实现普通数组不能实现的桶排序!!!
其次这个题一定要将符合要求的存放进数组中,从而不会PE
D题体会:
1. 解题思路:实质是找到最终的二进制数的最高位数以及最终二进制数中1的个数,两者相减就是所求的个数
2的某次方减去1转换成二进制的话,转化成的二进制数全是1,而2的某次方转化为二进制数的话,转化成的二进制数只有最高位是1,其余全都是零。 定义一个map,key是二进制的位数,value是该位数上的个数。 依次输入每一个a[ i ],保存位数,并且在每一次保存的同时进位。 通过遍历找到最终二进制数的最高位数以及1的个数。 两者相减。
2. 注意进位的时候代码的写法。
3. 注意最高位的求法
**4.**理解结果为什么要加上一个1。