c++ map的总结

目录

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中元素的插入

  1. 使用下标[]
  2. 使用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\n", 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

猜你喜欢

转载自www.cnblogs.com/Elaine-DWL/p/9781637.html