IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> c++ STL之map详解-小白入门 -> 正文阅读

[Python知识库]c++ STL之map详解-小白入门

  • 博客主页: https://blog.csdn.net/qq_50285142
  • 欢迎点赞👍收藏?关注?留言 📝 如有错误,敬请指正
  • 🎈虽然生活很难,但我们也要一直走下去🎈

点击👉STL超全总结👈跳转主目录

1. map介绍

映射类似于函数的对应关系,每个x对应一个y,而map是每个键对应一个值。会python的朋友学习后就会知道这和python的字典非常类似。
比如说:学习 对应 看书,学习 是键,看书 是值。
学习->看书
玩耍 对应 打游戏,玩耍 是键,打游戏 是值。
玩耍->打游戏

//头文件
#include<map>
//初始化定义
map<string,string>mp;
map<string,int>mp;
map<int,node>mp;//node是结构体类型

map特性:map会按照键的顺序从小到大自动排序

2. 函数方法

代码含义
mp.find(key)返回键为key的映射的迭代器 O(logN) 注意:用find函数来定位数据出现位置,它返回的一个迭代器,当数据出现时,它返回数据所在位置的迭代器,如果map中没有要查找的数据,它返回的迭代器等于end函数返回的迭代器,
mp.erase(it)删除迭代器对应的键和值O(1)
mp.erase(key)根据映射的键删除键和值 O(logN)
mp.erase(first,last)删除左闭右开区间迭代器对应的键和值 O(last-first)
mp.size()返回映射的对数 O(1)
mp.clear()清空map中的所有元素 O(N)
mp.insert()插入元素,插入时要构造键值对
mp.empty()如果map为空,返回true,否则返回false
mp.begin()返回指向map第一个元素的迭代器(地址)
mp.end()返回指向map尾部的迭代器(最后一个元素的下一个地址)
mp.rbegin()返回指向map最后一个元素的迭代器(地址)
mp.rend()返回指向map第一个元素的迭代器(地址)

注意:

  • mp.begin()和mp.end()用法:
    用于正向遍历map
map<int,int>mp;
mp[1] = 2;
mp[2] = 3;
mp[3] = 4;
auto it = mp.begin();
while(it!=mp.end())
{
	cout<<it->first << " "<<it->second<<"\n";
	it ++;
}

结果:

1 2
2 3
3 4
  • mp.rbegin()和mp.rend()
    用于逆向遍历map
map<int,int>mp;
mp[1] = 2;
mp[2] = 3;
mp[3] = 4;
auto it = mp.rbegin();
while(it!=mp.rend())
{
	cout<<it->first << " "<<it->second<<"\n";
	it ++;
}

结果:

3 4
2 3
1 2

3. 添加元素

//直接声明
map<string,string>mp;
//方式一:
mp["学习"] = "看书";
mp["玩耍"] = "打游戏";

//方式二:插入元素构造键值对
mp.insert(make_pair("vegetable","蔬菜"));

//方式三:
mp.insert(pair<string,string>("fruit","水果"));

//方式四:
mp.insert({"hahaha","wawawa"});

4. 访问元素

6.4.1.下标访问:(大部分情况用于访问单个元素)

mp["菜哇菜"] = "强哇强";
cout<<mp["菜哇菜"]<<"\n";//只是简写的一个例子,程序并不完整

6.4.2.遍历访问:

map<string,string>::iterator it;
//1.迭代器访问
for(it=mp.begin();it!=mp.end();it++)
{
	//      键                 值 
	// it是结构体指针访问所以要用 -> 访问
	cout<<it->first<<" "<<it->second<<"\n";
	//*it是结构体变量 访问要用 . 访问
	//cout<<(*it).first<<" "<<(*it).second;
}

//2.智能指针访问
for(auto i:mp)
cout<<i.first<<" "<<i.second<<endl;//键,值

//3.对指定单个元素访问
map<char,int>::iterator it = mp.find('a');
cout<<it -> first <<" "<<  it->second<<"\n";

//4.c++17特性
for(auto [x,y] : mp)
	cout<<x<<" "<<y<<"\n";
//x,y对应键和值

还有两种映射:

multimap
键可以重复,即一个键对应多个值,如要了解,可以自行搜索。
unordered_map
不排序,只映射,速度更快,方法基本一样

如要了解,可查看相关博客

往期优质文章推荐

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-19 07:56:01  更:2021-09-19 07:56:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:53:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码