进阶C++STL之map
Posted 信息学竞赛从入门到巅峰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进阶C++STL之map相关的知识,希望对你有一定的参考价值。
#include <map> /* map需要的头文件 */
map <type1, type2> name;
/* 定义一个名称为name,第一个关键字的类型为type1,第二个关键字的类型为type2的map */
/* 例子 */
map <int, int> q;
map <int, long long> abc;
map <string, double> q;
map <tpye1, type2> :: iterator name;
/* 定义了一个对应类型的map的迭代器,但是没有指向的目标 */
q.begin(); /* 名称为q的map的第一个元素 */
q.end(); /* 名称为q的map的最后一个元素的下一个位置 */
/* 例子 */
map <int, double> q;
/* 通过一系列操作往q中加入元素 */
map <int, double> :: iterator it = q.begin();
it -> first; /* 访问第一个元素的第一关键字 */
it -> second; /* 访问第一个元素的第二关键字 */
q.insert(make_pair(x, y)); /* 插入一个二元组 */
q.find(x); /* 返回第一关键字为x的迭代器,如果不存在返回q.end() */
q.erase(it); /* 删除对应的迭代器 */
q.erase(q.find(x)); /* 删除x所在的二元组 */
q.clear(); /* 将q清空 */
q.empty(); /* 询问q中是否为空,如果为空返回true,否则返回false */
q.lower_bound(x); /* 返回第一个第一关键字大于等于x的二元组的迭代器 */
q.upper_bound(x); /* 返回第一个第一关键字大于x的二元组的迭代器 */
/* map还可以通过[]的形式进行访问,以下假设q为一个map */
q[0] /* 返回第一关键字为0的二元组对应的第二关键字 */
q[x] /* 返回第一关键字为x的二元组对应的第二关键字 */
/* 同理,map也可以使用类似数组的方式进行修改 */
q[0] = 1.1; /* 将第一关键字为0的二元组的第二关键字修改为1.1 */
q["abc"] = 10; /* 将第一关键字为"abc"的二元组的第二关键字修改为10 */
insert |
find |
erase |
lower_bound |
upper_bound |
O(log n) | O(log n) |
O(log n) |
O(log n) |
O(log n) |
内容下至信息学竞赛,上达自然语言处理,应有尽有。
喜欢就关注吧。
以上是关于进阶C++STL之map的主要内容,如果未能解决你的问题,请参考以下文章