zoukankan      html  css  js  c++  java
  • C++ map修改指定key的value

      对于修改C++指定key的value,网上查了很多,都说直接insert就会覆盖原来的值,是否是这样的呢

     C++ Code 
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    // mapmodifykey.cpp : Defines the entry point for the console application.
    //

    #include "stdafx.h"
    #include <iostream>
    #include <map>
    #include <string>

    using namespace std;


    int _tmain(int argc, _TCHAR* argv[])
    {
        map<string, 
    int> m_map;
        m_map.insert(make_pair(
    "Michael Jordan"23));
        m_map.insert(make_pair(
    "Kobe Bryant"8));
        m_map.insert(make_pair(
    "James Harden"13));
        m_map.insert(make_pair(
    "Chris Paul"3));
        map<string, 
    int>::const_iterator iteMap = m_map.begin();
        cout << 
    "==============旧值=============" << endl;
        
    for(; iteMap != m_map.end(); ++ iteMap)
        {
            cout << iteMap->first;
            cout << 
    ":";
            cout << iteMap->second << endl;
        }
        m_map.insert(make_pair(
    "Kobe Bryant"24));
        
    //m_map["Kobe Bryant"] = 24;
        iteMap = m_map.begin();
        cout << 
    "==============新值=============" << endl;
        
    for(; iteMap != m_map.end(); ++ iteMap)
        {
            cout << iteMap->first;
            cout << 
    ":";
            cout << iteMap->second << endl;
        }
        
    return 0;
    }

      看了半天,似乎并没有把key为Kobe Bryant的value修改为24,还是之前的值8。通过insert操作修改map指定key的value是不行的,正确的做法是这样的:

     C++ Code 
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    // mapmodifykey.cpp : Defines the entry point for the console application.
    //

    #include "stdafx.h"
    #include <iostream>
    #include <map>
    #include <string>

    using namespace std;


    int _tmain(int argc, _TCHAR* argv[])
    {
        map<string, 
    int> m_map;
        m_map.insert(make_pair(
    "Michael Jordan"23));
        m_map.insert(make_pair(
    "Kobe Bryant"8));
        m_map.insert(make_pair(
    "James Harden"13));
        m_map.insert(make_pair(
    "Chris Paul"3));
        map<string, 
    int>::const_iterator iteMap = m_map.begin();
        cout << 
    "==============旧值=============" << endl;
        
    for(; iteMap != m_map.end(); ++ iteMap)
        {
            cout << iteMap->first;
            cout << 
    ":";
            cout << iteMap->second << endl;
        }

        
    //m_map.insert(make_pair("Kobe Bryant", 24));
        m_map["Kobe Bryant"] = 24;
        iteMap = m_map.begin();
        cout << 
    "==============新值=============" << endl;
        
    for(; iteMap != m_map.end(); ++ iteMap)
        {
            cout << iteMap->first;
            cout << 
    ":";
            cout << iteMap->second << endl;
        }
        
    return 0;
    }

  • 相关阅读:
    word上怎么打钩
    POI操作excel常用方法总结
    web.xml中Filter过滤器标签说明
    IDEA使用操作说明(自己总结)
    windows 64位上oracle 11g安装
    List<T>与List<?>的区别
    java分页之假分页
    CDN之Web Cache
    HTTP之缓存技术
    HTTP之Cookie和Session
  • 原文地址:https://www.cnblogs.com/MakeView660/p/9003464.html
Copyright © 2011-2022 走看看