【C++】std::map基本使用
2021/9/10 12:35:22
本文主要是介绍【C++】std::map基本使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 0x00 前言
- 0x01 std::map简介
- 0x02 std::map基本使用举例
0x00 前言
文章中的文字可能存在语法错误以及标点错误,请谅解;
如果在文章中发现代码错误或其它问题请告知,感谢!
0x01 std::map简介
map
是一种关联容器(有序键值对容器),由键值Key
和映射值Value
组合而成的元素,容器中的元素顺序按照键值的取值升序排列。
在map
中,键值Key
是标识和排序的唯一标识元素,映射值Value
存储着与键值Key
相关联的内容数据,所以可以根据键来查找关联数据。另外,键Key
和Value
是不同的类型,可以用std::pair
组合Key
和Value
两种类型。
map
通常实现为红黑树。
map
中的映射值Value
可以通过键值Key
和括号操作符(operator[]
)访问。
map
容器定义在#include <map>
头文件中,定义如下:
template< class Key, class T, class Compare = std::less<Key>, class Allocator = std::allocator<std::pair<const Key, T> > > class map;
参数模板:
Key
:键的类型。map
中的每个元素都由其键值唯一标识。别名为成员类型map::key_type
。
T
:映射值的类型。map
中的每个元素都将一些数据存储为其映射值。别名为成员类型map::mapped_type
。
Compare
:一个二进制谓词,它接受两个键值作为参数并返回一个bool
值。在表达式 comp(a, b)
中,comp
是Compare
类型的对象,a
和b
是键值,如果a
被认为在b
之前,则表达式comp(a, b)
应该返回true
。map
对象使用这个表达式来确定容器中元素的顺序以及两个元素的键是否相等。Compare
可以是函数指针或函数对象,默认为 less<T>
,其返回与使用小于操作符(a
<b
)相同的结果。别名为成员类型map::key_compare
。
Alloc:分配器对象的类型,用于定义存储分配模型。默认情况下,使用allocator
类模板,该模板定义最简单的内存分配模型,并且与值无关。别名为成员类型map::allocator_type
。
0x02 std::map基本使用举例
#include <iostream> #include <assert.h> #include <map> using namespace std; int main(void) { //初始化 std::map<int, string> map1; std::map <int, std::string> map2 = { {1,"AA"}, {2,"BB"}, {3,"CC"}, }; //插入 // 如果已经存在键值,则会作赋值修改操作,如果没有则插入 map2[3] = "CC2"; map2[4] = "DD"; //通过insert插入 map2.insert(std::pair<int, std::string>(5, "EE")); //取值 std::cout << map2.at(3).c_str() << std::endl;//map2[3]存在,不会报错 //Map中元素取值主要有at和[]两种操作,at会作下标检查,而[]不会。 //std::cout<< map2.at(6).c_str()<< std::endl;//使用at会进行关键字检查,因为没有6因此报错 std::cout << map2[7].c_str() << std::endl;//键值中没有关键字7,但使用[]取值会导致插入,因此不会报错,但打印结果为空 auto iter = map2.find(3); if(iter == map2.end()) { assert(false); //若没有该键值则会返回end return -1; } auto value = iter->second; //second返回iter的value //遍历 for(auto item =map2.begin();item!=map2.end();item++) { auto value= item->second; if(value == "CC2") { std::cout << "find!" << std::endl; } } return 0; }
运行结果:
CC2 find!
以上。
参考文档:
1.https://www.apiref.com/cpp-zh/cpp/container/map.html
2.https://blog.csdn.net/wcc27857285/article/details/78289175
这篇关于【C++】std::map基本使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-10Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南
- 2025-01-03图像文字理解,OCR、大模型还是多模态模型?PalliGema2在QLoRA技术上的微调与应用