• 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
    ", 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

  • 相关阅读:
    java内存管理之内存模型
    HTTP协议
    12 数值的整数次方
    11 二进制中1的个数+二进制补充知识点
    10 矩形覆盖
    9 变态跳台阶
    8 跳台阶
    7斐波那契数列
    6旋转数组的最小数字
    5用两个栈实现队列
  • 原文地址:https://www.cnblogs.com/Elaine-DWL/p/9781637.html
Copyright © 2020-2023  润新知