c++ stl map的常见用法

193 阅读3分钟

map容器是一个键值对key-value的映射,其内部实现是一棵以key为关键码的红黑树。

创建一个map

map<key_type, value_type> mp;
map<int, int> mp;
map<string, int> mp;

[]操作符

mp[key]; //返回Key所对应的value值,时间复杂度为 O(logn)

既可以通过mp[key]获取值,也可以直接通过hashMap[key]修改值

其他操作

size/empty/clear/begin/end

h.find(x)在变量名为h的map中查找key为x的二元组


mp.beign()// 返回第一个键值对
mp.end()//返回最后一个键值对的下一个位置

样例

#include <iostream>
#include <map>
using namespace std;

int main(){
    int n;
    map<int, int> mp;
    int num;
    cin >> n;
    for(int i = 0; i < n; i ++){
        cin >> num;
        mp[num]++;
    }    
    return 0;
}

输入数据

10 3 8 8 3 2 2 2

mao的变化情况

num: 10    mp[10]:1
num: 3     mp[3]:1
num: 8     mp[8]:1
num: 8     mp[8]:2
num: 3     mp[3]:2
num: 2     mp[2]:1
num: 2     mp[2]:2
num: 2     mp[2]:3

数据

520 888 364 -566 100 242 932 139 -192 -28 -566 -237 560 -228 -129 -313 -107 -129 358 -228 358 144 560 364 932 -271 520 520 60 716 -662 351 -115 351 -16 716 100 -237 376 -115 -564 -111 -228 242 376 210 -662 -756 60 358 364 -821 -662 242 765 -25 665 418 82 929 -206 60 139 888 929 -566 -107 -16 588 -115 665 -25 -374 472 100 -192 -662 665 358 210 -374 -731 -25 210 376 520 144 472 243 -206 -564 -756 -271 665 608 -228 376 -107 588 -564

遍历map

iter->first   -821    iter->second   1
iter->first   -756    iter->second   2
iter->first   -731    iter->second   1
iter->first   -662    iter->second   4
iter->first   -566    iter->second   3
iter->first   -564    iter->second   3
iter->first   -374    iter->second   2
iter->first   -313    iter->second   1
iter->first   -271    iter->second   2
iter->first   -237    iter->second   2
iter->first   -228    iter->second   4
iter->first   -206    iter->second   2
iter->first   -192    iter->second   2
iter->first   -129    iter->second   2
iter->first   -115    iter->second   3
iter->first   -111    iter->second   1
iter->first   -107    iter->second   3
iter->first   -28    iter->second   1
iter->first   -25    iter->second   3
iter->first   -16    iter->second   2
iter->first   60    iter->second   3
iter->first   82    iter->second   1
iter->first   100    iter->second   3
iter->first   139    iter->second   2
iter->first   144    iter->second   2
iter->first   210    iter->second   3
iter->first   242    iter->second   3
iter->first   243    iter->second   1
iter->first   351    iter->second   2
iter->first   358    iter->second   4
iter->first   364    iter->second   3
iter->first   376    iter->second   4
iter->first   418    iter->second   1
iter->first   472    iter->second   2
iter->first   520    iter->second   4
iter->first   560    iter->second   2
iter->first   588    iter->second   2
iter->first   608    iter->second   1
iter->first   665    iter->second   4
iter->first   716    iter->second   2
iter->first   765    iter->second   1
iter->first   888    iter->second   2
iter->first   929    iter->second   2
iter->first   932    iter->second   2