数据结构3-映射表(map)

映射表(map)

映射表其实就像我们学习的函数一样,例如说我们可以定义f(me)=juruo,f(noip)=keng,f(wifi)=life…..

map就是从键(key)到值(value)的映射。因为重载了[ ]运算符,map像是数组的“高
级版”。例如可以用一个map< string,int>month_name来表示“月份名字到月份编号”的映射,
然后用month_name[“July”]=7这样的方式来赋值。——《算法竞赛入门经典(第二版)》

使用条件:一对一或多对一就和函数一样
函数
XXX.insert() 插入映射
XXX.count() 查找first
XXX.erase() 删除映射
XXX.size() 获取大小
XXX.clear() 清空
模板:
1.定义

#include 
using namespace std;
mapXXX;

2.访问

#include 
#include 
#include 
using namespace std;
int main() {
    map<string, int> dict;  // {}
    dict["Tom"] = 1; // {"Tom"->1}
    dict["Jone"] = 2; // {"Tom"->1, "Jone"->2}
    dict["Mary"] = 1; // {"Tom"->1, "Jone"->2, "Mary"->1}
    printf("Mary is in class %d\n", dict["Mary"]);
    printf("Tom is in class %d\n", dict["Tom"]);
    return 0;
}

3.查找:

#include 
#include 
#include 
using namespace std;
int main() {
    map<string, int> dict;  // {}
    dict["Tom"] = 1; // {"Tom"->1}
    dict["Jone"] = 2; // {"Tom"->1, "Jone"->2}
    dict["Mary"] = 1; // {"Tom"->1, "Jone"->2, "Mary"->1}
    if (dict.count("Mary")) {
        printf("Mary is in class %d\n", dict["Mary"]);
    } else {
        printf("Mary has no class");
    }
    return 0;
}

4.遍历(注意迭代器的使用)

#include 
#include 
#include 
using namespace std;
int main() {
    map<string, int> dict;  // {}
    dict["Tom"] = 1; // {"Tom"->1}
    dict["Jone"] = 2; // {"Tom"->1, "Jone"->2}
    dict["Mary"] = 1; // {"Tom"->1, "Jone"->2, "Mary"->1}
    for (map<string, int>::iterator it = dict.begin(); it != dict.end(); ++it) {
        cout << it->first << " is in class " << it->second << endl;
    }
    return 0;
}

5.清空

XXX.clear();

你可能感兴趣的:(算法学习总结,#,数据结构)