c++ map容器-插入的四种方法

一、map容器的四种插入方法:

创建map对象:

map m1;

pair对组的认识:

如果对pair对组不太了解,可以先看看这位博主对pair对组的相关介绍

【C++】什么是pair(对组)、pair(对组)概念

第一种:

//通过使用pair对组构造函数 并使用匿名函数对将pair对组的数据赋给map对象

//系统会自动回收匿名对象 当匿名对象没有进行绑定操作,会自动进行析构。

//在此之前会将其数据赋给m1 

m1.insert(pair(1, 4));

第二种:

 //使用paird对组的另一种构造函数  使用make_pair会进行自动识别输入数据的类型

 m1.insert(make_pair(3, 0));

第三种:

//map作用域下的 value _类型()  少用,但可以用来装

m1.insert(map::value_type(2, 7));

第四种:

//[ ]方式 注意:此种方式 索引不是数组下标 而是key值  即  [key值]

m1[4] = 5;

进行输出的操作:

  //当然你也可以使用普通的迭代器 不需要加const_ 直接在::后面加上iterator
void printMap(const map& m)//通过引用方式读取 来节约空间
{
   
    for (map::const_iterator it = m.begin(); it != m.end(); it++)
    {
        cout << "key值= " << it->first << " value值= " <second<< endl;
    }
    cout << endl;
}

     //  为什么使用const_iterator  防止通过迭代器更改数据
    //    请看以下案例
   //   for (deque::const_iterator it = d.begin(); it < d.end(); it++) 
   //    为了不改变输出的数据 使用 const 
    //    {
    //        *it = 100;  //无法再更改数据 
    //        cout << *it << " ";
    //    }
    //    cout<

四种输出结果:

c++ map容器-插入的四种方法_第1张图片

第四种的注意事项:

 1.若打印输出一个未定义的key,会输出0,并会创建此key,并赋予其value值为0

未定义key 5  但仍会返回 0 创建一个key 为 5,value 为 0 的值

 cout << "m1[5]的值为:"<

  2.用[ ]方式会可以替换旧值.非常方便

  //更改key下的value值

  m1[4] = 100;

其运行结果

c++ map容器-插入的四种方法_第2张图片

二、完整代码:

#include
using namespace std;
#include
void printMap(const map& m)
{
    for (map::const_iterator it = m.begin(); it != m.end(); it++)
    {
        cout << "key值= " << it->first << " value值= " <second<< endl;
    }
    cout << endl;
}
void test01()
{
    map m1;
    //插入
    //第一种:
    m1.insert(pair(1, 4));
    //第二种:
    m1.insert(make_pair(3, 0));//pair 的 独特 初始化 
    //第三种:
    m1.insert(map::value_type(2, 7));//map作用域下的值 类型() 更适合装逼
    //第四种:
    m1[4] = 5;//注意:此种方式 索引不是数组下标 而是key值  
    printMap(m1);
    cout << "m1[5]的值为:"<

三、运行结果:

c++ map容器-插入的四种方法_第3张图片

四、总结:

 [ ]方式的好处:insert的方式不会替换旧值.用[ ]方式才会替换旧值.非常方便。

用第四种方式 打印输出若你key值填错,也会创建一个value为0的值,并进行返回。

你可能会想:那可以用 if(m1[i] =0) {m1.erase(i);} 进行将填错的删除(如erase(4),则删除key为4的数据)

确实可以,但得注意原本数据中的value值中是否就有0。

你可能感兴趣的:(c++学习笔记,学习,笔记,c++)