C++学习笔记之map键值对的修改

来源:互联网 发布:mac 炉石传说 插件 编辑:程序博客网 时间:2024/05/17 22:21

问题描述

如果map里面的值存放的是像,我们大可以直接将新的对象赋值给map,因为类里面一般提供了赋值函数,所以这样可以。

但是如果map里面存放的是常量,例如int,double,string,这样如何修改,我在网上查了很多,都说直接insert就会覆盖原来的值,是否这样?我们试试。

map<string, int> m_map;    m_map.insert(make_pair("a1", 1));m_map.insert(make_pair("a2", 2));m_map.insert(make_pair("a3", 3));    m_map.insert(make_pair("a4", 4));m_map.insert(make_pair("a5", 5));m_map.insert(make_pair("a6", 6));    m_map.insert(make_pair("a7", 7));m_map.insert(make_pair("a8", 8));m_map.insert(make_pair("a9", 9));    m_map.insert(make_pair("a10", 10));m_map.insert(make_pair("a11", 11));m_map.insert(make_pair("a12", 12));    map<string, int>::const_iterator iteMap = m_map.begin();    for(; iteMap != m_map.end(); ++ iteMap)    {        cout << iteMap->second << endl;    }    cout << "==============旧值================================================================" << endl;    m_map.insert(make_pair("a6", 120));    //m_map["a6"] = 120;    //m_map["a13"] = 13;    iteMap = m_map.begin();    for(; iteMap != m_map.end(); ++ iteMap)    {        cout << iteMap->second << endl;    }    cout << "==============新值================================================================" << endl;

截图如下:
这里写图片描述
我们似乎没有看到120的值出现,也就是说值根本没有覆盖,那么网上又为什么那么多人说这样可以呢?找了半天,原来那是在JAVA里面的说法,在C++里面不成立。正确的做法是这样的:

map<string, int> m_map;    m_map.insert(make_pair("a1", 1));m_map.insert(make_pair("a2", 2));m_map.insert(make_pair("a3", 3));    m_map.insert(make_pair("a4", 4));m_map.insert(make_pair("a5", 5));m_map.insert(make_pair("a6", 6));    m_map.insert(make_pair("a7", 7));m_map.insert(make_pair("a8", 8));m_map.insert(make_pair("a9", 9));    m_map.insert(make_pair("a10", 10));m_map.insert(make_pair("a11", 11));m_map.insert(make_pair("a12", 12));    map<string, int>::const_iterator iteMap = m_map.begin();    for(; iteMap != m_map.end(); ++ iteMap)    {        cout << iteMap->second << endl;    }    cout << "==============旧值================================================================" << endl;    //m_map.insert(make_pair("a6", 120));    m_map["a6"] = 120;    m_map["a13"] = 13;    iteMap = m_map.begin();    for(; iteMap != m_map.end(); ++ iteMap)    {        cout << iteMap->second << endl;    }    cout << "==============新值================================================================" << endl;

截图如下:
这里写图片描述
看到了吧,不仅120被插入到里面去了,连之前没有的13也被插入到了里面,可见数组形式进行操作确实很强大。

原创粉丝点击