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; } |
希望大家能把自己的所学和他人一起分享,不要去鄙视别人索取时的贪婪,因为最应该被鄙视的是不肯分享时的吝啬。