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;
    }
};
  1. 简介
    Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。
    有序map内部自建一颗红黑树(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的;无序map内部是哈希表。
  2. 功能
  3. 使用
    map类所在头文件
    #include <map>  //注意,STL头文件没有扩展名.h
    map对象是模板类,需要关键字和对象两个模板参数:
    std:map<int,string> personnel;
  4. 构造
    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.

全部评论

相关推荐

vip牛牛:测试吧,开发现在至少212
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
03-10 14:27
已编辑
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务