map中的散碎知识点
问题:使用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中的散碎知识点相关推荐
- 如果要将对象用作Map中的key,需要注意什么
点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 本文阅读时间大约5分钟. 参考答案 如果将对象作为Map中的key,需要是实现该对象的equal ...
- Java Map中那些巧妙的设计
简介: 他山之石可以攻玉,这些巧妙的设计思想非常有借鉴价值,可谓是最佳实践.然而,大多数有关Java Map原理的科普类文章都是专注于"点",并没有连成"线", ...
- Java Map中那些巧妙的设计
最近拜读了一些Java Map的相关源码,不得不惊叹于JDK开发者们的鬼斧神工.他山之石可以攻玉,这些巧妙的设计思想非常有借鉴价值,可谓是最佳实践.然而,大多数有关Java Map原理的科普类文章都是 ...
- 关于HTML的碎知识点
关于HTML的碎知识点 1. <!DOCTYPE html> (1)文档类型声明,作用就是告诉我们浏览器使用哪种HTML版本来显示网页. (2)注意:该标签处于文档中的最前端,不是HTML ...
- python中的一些小知识点
本篇博客将会讲述python中存在的一些小知识点. 一.小知识点 1.for-else结构(即for和else不同级)如图: 知识:当迭代的对象迭代完并为空时,位于else的子句将执行,而如果在for ...
- Jsp获得Map中map.put(2, bb);此类的value值
<%--获取Map中的数据 --%><%Map<String, String> map = new HashMap<String, String>();map ...
- 判断 std map 中是否有 key
判断 std 中的 map 中是否有 key 第一种: if (m_pushMap.find("token0") != m_pushMap.end()) { } 第二种: if ( ...
- python100个必背知识-python编程面试中必考的知识点,数据类型全解,笔记超全面...
原标题:python编程面试中必考的知识点,数据类型全解,笔记超全面 python作为一门高级编程语言,它的定位是优雅.明确和简单.阅读Python编写的代码感觉像在阅读英语一样,这让使用者可以专注于 ...
- map中的迭代删除操作注意问题
如果map中包含若干个key为10的倍数,要删除key为10的倍数. 错误形式 #include <iostream> #include <map> #include < ...
最新文章
- NTU 课程笔记:CV6422 样本分布
- 调试的时候step into,step out,step over有什么区别?各有什么作用?分别在什么情况下使用?
- 朋友圈自动回复评论_微信新版,朋友圈可以表情包回复了!网友:评论区斗起来.jpg...
- Day1:360培训学习重点笔记(7.13)
- 解决自定义UITableViewCell在浏览中出现数据行重复的问题
- php获取微信uninoid_微信小程序获取openid和unionid方法
- 把项目通过maven生产源码包和文档包并发布到自己的私服上
- 折叠屏能否治愈年轻人的“换机焦虑”
- 用python来做一个APP | python GUI 基础(实战)
- 基于html5贪吃蛇小游戏,H5 canvas实现贪吃蛇小游戏
- 用于分类的神经网络算法,图像识别神经网络算法
- 机器学习和人工智能的关系是什么?
- 分享一套PHP的cms系统,免授权可商用,零元CMS企业官网系统,采用laravel+admin架构的企业建站系统
- malloc()函数与free()函数的使用
- 《Unity Shader入门精要》笔记:基础篇(2)
- llvm libLLVMCore源码分析 05 - Instruction Class
- vscode写php高亮,写了一个Hy的vscode语法高亮插件
- 水流强度指数(SPI)地形湿度指数(TWI)计算
- html简单留言板教程,JS实现简易留言板(节点操作)
- Docker学习之路04:创建定制Nginx镜像