【STL容器】Map使用介绍补充说明
Map
- 1.前文链接
- 2.补充说明
- 3.总结
1.前文链接
C++中Map的使用及介绍+operator[ ]的底层实现(超详细版本+代码+底层剖析)
2.补充说明
- 统计每个字母出现的次数
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<map>
using namespace std;
void test()
{string arr[] = { "A","A","B","C","A","P","D","H","H","C" };map<string, int>countmap;for (auto& str : arr){countmap[str]++; //不存在就会自己创建 存在就++value值}for (const auto& s : countmap){std::cout << s.first<< ":" << s.second << std::endl;}
}
int main()
{test();return 0;
}
- 说明
在这段代码中,countmap[str]++ 的行为是通过 std::map 提供的特性来实现的。具体来说,这是利用了 std::map 的下标访问操作符 [] 的行为。
当你使用 countmap[str] 时,如果 str 在 countmap 中不存在,std::map 会自动插入一个键为 str、值为默认值的键值对。对于整型类型,默认值是 0。然后,表达式 countmap[str] 返回对应键的值的引用。
因此,如果 str 在 countmap 中不存在,countmap[str] 就会返回一个新插入的键值对的值的引用,该值被初始化为 0。然后,++ 运算符会对这个值进行递增操作。
如果 str 在 countmap 中已经存在,countmap[str] 就会返回对应键的值的引用,然后对这个值进行递增操作。这样就实现了 “不存在就会自己创建,存在就递增值” 的效果。
总的来说,通过使用 std::map 的下标访问操作符 [],可以实现方便地对键值对进行访问和操作,而且能够在需要时自动插入新的键值对。
3.总结
- map中的的元素是键值对
- map中的key是唯一的,并且不能修改
- 默认按照小于的方式对key进行比较
- map中的元素如果用迭代器去遍历,可以得到一个有序的序列
- map的底层为平衡搜索树(红黑树),查找效率比较高
- 支持[]操作符,operator[]中实际进行插入查找
细节拓展:
链接: C++中的map用法详解