C/C++map

map和pair( 二元结构体)有关知识点: map(含pair)的二维表示和迭代器遍历(大佬学长总结)
https://blog.csdn.net/ljw_study_in_CSDN/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.csdn.net/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。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值