问题:使用map统计一个字符串中的每个字符出现的次数

#include<iostream>
#include<map>
#include<string>
using namespace std;int main()
{map<char, int>needs;string s;s = { "asdwafsada" };for (auto x : s){needs[x]++; //遍历每个字符}map<char, int>::iterator it;  //创建一个迭代器   for (it = needs.begin(); it != needs.end(); it++)  // 这里能不能使用auto这种进行遍历???{cout << it->first <<'='<< it->second << endl;}return 0;
}​

输出结果:

-------------------------------2022.3.28更新---------------------------------------------

使用c++11  auto遍历map


for(auto x:needs)
{
cout<<x.first<<'='<<x.end<<endl;
}

-------------------------------2022.3.30更新---------------------------------------------

map中的键一但存入是不可以更改的,只能修改指定键对应的值;

要想修改键,只能删除重新写入

插入元素:C++ STL map 类模板中对[ ]运算符进行了重载,即根据使用场景的不同,借助[ ]运算符可以实现不同的操作。当操作对象为 map 容器中已存储的键值对时,则借助 [ ] 运算符,既可以获取指定键对应的值,还能对指定键对应的值进行修改;反之,若 map 容器内部没有存储以 [ ] 运算符内指定数据为键的键值对,则使用 [ ] 运算符会向当前 map 容器中添加一个新的键值对。

获取元素:map 类模板中对[ ]运算符进行了重载,这意味着,类似于借助数组下标可以直接访问数组中元素,通过指定的键,我们可以轻松获取 map 容器中该键对应的值。只有当 map 容器中确实存有包含该指定键的键值对,借助重载的 [ ] 运算符才能成功获取该键对应的值;反之,若当前 map 容器中没有包含该指定键的键值对,则此时使用 [ ] 运算符将不再是访问容器中的元素,而变成了向该 map 容器中增添一个键值对。其中,该键值对的键用 [ ] 运算符中指定的键,其对应的值取决于 map 容器规定键值对中值的数据类型,如果是基本数据类型,则值为 0;如果是 string 类型,其值为 "",即空字符串(即使用该类型的默认值作为键值对的值)。

map 的基本操作函数:

C++ Maps 是一种关联式容器,包含“关键字/值”对

begin()                  返回指向 map 头部的迭代器

clear()                 删除所有元素

count()                  返回指定元素出现的次数

empty()                 如果 map 为空则返回 true

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的函数

-------------------------------2022.3.31更新---------------------------------------------

map普通的插入都是使用insert,map.insert(map<int,int>(t-i,i)),但是如果想使用vector那样使用push_back,可以map[n].push_back(i),这样也可以完成插入.类似于vec.push_back(),map类型必须是vector或者string

//第一种方式
for(int i=1;i<=n;i++){int s;cin>>s;star[s].push_back(i);//一个i对应着一个S,把i插入star[s]中}//第二种方式
mp[1]=2;  // 1为key  2为value//第三种方式mp.insert(pair<int,int> (1,2));
//key为1  value为2

map中的散碎知识点相关推荐

  1. 如果要将对象用作Map中的key,需要注意什么

    点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 本文阅读时间大约5分钟. 参考答案 如果将对象作为Map中的key,需要是实现该对象的equal ...

  2. Java Map中那些巧妙的设计

    简介: 他山之石可以攻玉,这些巧妙的设计思想非常有借鉴价值,可谓是最佳实践.然而,大多数有关Java Map原理的科普类文章都是专注于"点",并没有连成"线", ...

  3. ​Java Map中那些巧妙的设计

    最近拜读了一些Java Map的相关源码,不得不惊叹于JDK开发者们的鬼斧神工.他山之石可以攻玉,这些巧妙的设计思想非常有借鉴价值,可谓是最佳实践.然而,大多数有关Java Map原理的科普类文章都是 ...

  4. 关于HTML的碎知识点

    关于HTML的碎知识点 1. <!DOCTYPE html> (1)文档类型声明,作用就是告诉我们浏览器使用哪种HTML版本来显示网页. (2)注意:该标签处于文档中的最前端,不是HTML ...

  5. python中的一些小知识点

    本篇博客将会讲述python中存在的一些小知识点. 一.小知识点 1.for-else结构(即for和else不同级)如图: 知识:当迭代的对象迭代完并为空时,位于else的子句将执行,而如果在for ...

  6. Jsp获得Map中map.put(2, bb);此类的value值

    <%--获取Map中的数据 --%><%Map<String, String> map = new HashMap<String, String>();map ...

  7. 判断 std map 中是否有 key

    判断 std 中的 map 中是否有 key 第一种: if (m_pushMap.find("token0") != m_pushMap.end()) { } 第二种: if ( ...

  8. python100个必背知识-python编程面试中必考的知识点,数据类型全解,笔记超全面...

    原标题:python编程面试中必考的知识点,数据类型全解,笔记超全面 python作为一门高级编程语言,它的定位是优雅.明确和简单.阅读Python编写的代码感觉像在阅读英语一样,这让使用者可以专注于 ...

  9. map中的迭代删除操作注意问题

    如果map中包含若干个key为10的倍数,要删除key为10的倍数. 错误形式 #include <iostream> #include <map> #include < ...

最新文章

  1. NTU 课程笔记:CV6422 样本分布
  2. 调试的时候step into,step out,step over有什么区别?各有什么作用?分别在什么情况下使用?
  3. 朋友圈自动回复评论_微信新版,朋友圈可以表情包回复了!网友:评论区斗起来.jpg...
  4. Day1:360培训学习重点笔记(7.13)
  5. 解决自定义UITableViewCell在浏览中出现数据行重复的问题
  6. php获取微信uninoid_微信小程序获取openid和unionid方法
  7. 把项目通过maven生产源码包和文档包并发布到自己的私服上
  8. 折叠屏能否治愈年轻人的“换机焦虑”
  9. 用python来做一个APP | python GUI 基础(实战)
  10. 基于html5贪吃蛇小游戏,H5 canvas实现贪吃蛇小游戏
  11. 用于分类的神经网络算法,图像识别神经网络算法
  12. 机器学习和人工智能的关系是什么?
  13. 分享一套PHP的cms系统,免授权可商用,零元CMS企业官网系统,采用laravel+admin架构的企业建站系统
  14. malloc()函数与free()函数的使用
  15. 《Unity Shader入门精要》笔记:基础篇(2)
  16. llvm libLLVMCore源码分析 05 - Instruction Class
  17. vscode写php高亮,写了一个Hy的vscode语法高亮插件
  18. 水流强度指数(SPI)地形湿度指数(TWI)计算
  19. html简单留言板教程,JS实现简易留言板(节点操作)
  20. Docker学习之路04:创建定制Nginx镜像

热门文章

  1. pip、pip2和pip3区别
  2. java csv导出 乱码_java导出csv乱码解决方法介绍
  3. 【科技百咖】安尼梅森:向阳而生 砥砺前行
  4. Linux更换安装软件源
  5. linux 阵列命令,Adaptec raid卡命令行管理
  6. Git 分支合并策略
  7. 基于Rsoft的单模光纤弯曲结构及研究分析
  8. Charles_3.11安装破解版
  9. 嬴政的执政逻辑,你真懂吗?
  10. VBA OR ODBC连接PostgreSQL