C++ map容器总结
使用时需要添加头文件#include <map>
map类型是一种以键-值(key-value)存储的属性类型。key是唯一的。
首先介绍一下pair类型
pair类型
头文件#include <utility>
,pair类型包含两个初始值,常用初始化和定义方法:
pair<T1, T2> p;// 定义了一个空对象,T1, T2分别是数据类型
pair<T1, T2> p(v1, v2);// 定义对象,并赋初始值
make_pair(v1, v2)// 以v1,v2定义了一个新的pair对象
p.fisrt// 取出pair对象第一个成员的值
p.second// 取出第二个成员的值
map对象的定义和初始化
map<key, value> m;// 定义一个空的map对象,key和value分别是键、值的数据类型
map<key, value> m(m2);// 创建m2的副本
map<key, value> m(b, e);
map中的value_type是存储元素的键以及值的pair类型,键为const。
map中元素的插入
- 使用下标[]
- 使用insert函数
在map中使用下标访问不存在的元素将导致在map容器中添加一个新的元素。
m.insert(e);// e是一个pair类型对象
m.insert(b, e);// b和e分别是迭代器的开始和结束位置
代码示例:
#include <stdio.h>
#inclde <map>
using namespace std;
int main(){
map<int, int> mp;
for(int i=0; i<10; i++)
map[i] = i;
for(int i=10; i<20; i++)
mp.insert(make_pair(i, i));
map<int, int>::iterator ite;
for(ite=mp.begin(); ite=mp.end(); ite++)
printf("%d-->%d
", ite->first, ite->second);
return 0;
}
我们直到,map中的key是唯一的。
当使用insert方法插入已经存在的Key值时,不能成功插入,也就是不会覆盖原来的键值;
而使用[]方式插入已经存在的Key值时,会用新的key-value覆盖原来的值。
map中元素的查找
采用下标读取map中元素时,若该元素不存在,则会在map中插入该元素。
map<int, int> mp;
mp.count(k);//返回的是键k出现的次数
mp.find(k); //返回的是指向该元素的迭代器
map中元素的删除
erase()函数
mp.erase(k);// 删除键为k的元素, 返回的是删除元素的个数
mp.erase(p);// 删除的时迭代器p指向的元素,返回值为void
mp.erase(b, e);// 删除迭代器[b, e)范围内的元素,返回void
转载自:https://blog.csdn.net/google19890102/article/details/51720305