STL | map
class Solution { public: int MoreThanHalfNum_Solution(vector<int> numbers) { //哈希 unordered_map<int, int> mp; for(const int val:numbers) ++mp[val];//提取val的计数器并加一 for(const int val:numbers){//对map中的每个元素 if(mp[val]>numbers.size()/2) return val; } return 0; } };
- 简介
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。
有序map内部自建一颗红黑树(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的;无序map内部是哈希表。 - 功能
- 使用
map类所在头文件#include <map> //注意,STL头文件没有扩展名.h
map对象是模板类,需要关键字和对象两个模板参数:std:map<int,string> personnel;
- 构造
map<int, string> mapStudent;
插入,第一种:用insert函数插入pair数据//数据的插入--第一种:用insert函数插入pair数据 #include <map>
include
include
using namespace std;
int main()
{
map<int, string> mapStudent; mapStudent.insert(pair<int, string>(1, "student_one")); mapStudent.insert(pair<int, string>(2, "student_two")); mapStudent.insert(pair<int, string>(3, "student_three")); map<int, string>::iterator iter; for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++) cout<<iter->first<<' '<<iter->second<<endl;
}
插入,第二种用insert函数插入value_type数据,下面举例说明
include
include
include
using namespace std;
int main()
{
map<int, string> mapStudent; mapStudent.insert(map<int, string>::value_type (1, "student_one")); mapStudent.insert(map<int, string>::value_type (2, "student_two")); mapStudent.insert(map<int, string>::value_type (3, "student_three")); map<int, string>::iterator iter; for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++) cout<<iter->first<<' '<<iter->second<<endl;
}
插入,第三种
//第三种:用数组方式插入数据,下面举例说明
include
include
include
using namespace std;
int main()
{
map<int, string> mapStudent; mapStudent[1] = "student_one"; mapStudent[2] = "student_two"; mapStudent[3] = "student_three"; map<int, string>::iterator iter; for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++) cout<<iter->first<<' '<<iter->second<<endl;
}
```
5.