C++抽象编程——如何修改map中的值
来源:互联网 发布:曹县大集淘宝村 编辑:程序博客网 时间:2024/06/06 17:54
思路的由来
刚刚在写一个程序,要用到将map中的值给改变,但是那是书本上提供的put()函数(我记得java好像也提供这一类的函数吧),我们的C++并不具有这样的功能,所以我便去搜索了一下大家的建议,发现确实是没有这个函数,要实现还是得自己来。我看的最多的还是说:先用eraser函数擦除,然后我们再进行赋值。没错我一开始我也是这样去想,也打算这样子去做的。就当我准备操作一番的时候,我在C++的网站上看到了让我眼前一亮的map初始化的方式,真的很方便而且我还没见过,先上一份那个网站的代码出来
// erasing from map#include <iostream>#include <map>int main (){ std::map<char,int> mymap; std::map<char,int>::iterator it; // insert some values:这种输入方法很适合我们的习惯 mymap['a']=10; mymap['b']=20; mymap['c']=30; mymap['d']=40; mymap['e']=50; mymap['f']=60; it=mymap.find('b'); mymap.erase (it); // erasing by iterator mymap.erase ('c'); // erasing by key it=mymap.find ('e'); mymap.erase ( it, mymap.end() ); // erasing by range // show content: for (it=mymap.begin(); it!=mymap.end(); ++it) std::cout << it->first << " => " << it->second << '\n'; return 0;}
思考
让我眼前一亮的是,这赋值居然可以像数组一样。够方便,而且map容器自带了first,跟second两个成员,分别对应的是key跟value。我们完全可以利用这一点来输出map。
现在,让我们想一想,如果我们可以像数组那样赋值,那么我们是不是也可以像数组那样更改对应的值呢? 猜测不能乱猜,就让我们撸一下代码试试:
#include <iostream>#include <map>using namespace std;int main(){ map<string,string> mymap; map<string,string>::iterator it;//用于检测改变值后迭代器是否会发生变化 mymap["hello"] = "world"; string key = "hello" ; cout << mymap[key] ; cout << endl; mymap[key] = "redAnt"; cout << mymap[key] ; //输出此时key对应的值 cout << endl; it = mymap.begin(); //将map的首个迭代器的值赋给it cout << (it -> first) << " " << (it ->second); return 0;}
分析
我们先把字符串“world”赋值给标签“hello”,然后定义一个string的变量key来储存标签(至于为什么,待会说)。先输出此时key对应的值,(就是“world”)。然后我们将字符串“redAnt”再赋值给key,再输出此时key对应的值。最后用迭代器查看一下是不是覆盖了,还是新建了一个map。答案就是如我们所想的,完美覆盖!结果如下:
总结
其实这样子看很简单,我们可以用一个函数来概括如何去修改map中的值:
void changeMap(map<string,string> &mymap, string key,string value){ mymap[key] = value;}
运行一下
#include <iostream>#include <map>using namespace std;void changeMap(map<string,string> &mymap, string key,string value); int main(){ map<string,string> mymap; map<string,string>::iterator it;//用于检测改变值后迭代器是否会发生变化 mymap["hello"] = "world"; string key = "hello" ; cout << mymap[key] ; cout << endl; string value = "redAnt"; changeMap(mymap, key, value); it = mymap.begin(); //将map的首个迭代器的值赋给it cout << (it -> first) << " " << (it ->second); return 0;}void changeMap(map<string,string> &mymap, string key,string value){ mymap[key] = value;}
结果如下:
0 0
- C++抽象编程——如何修改map中的值
- Map java中的map 如何修改Map中的对应元素
- 修改map中的值
- C++抽象编程——STL实战(5)——map在数据文件查找中的应用
- C++抽象编程——数据文件的读写与修改
- (转)Map java中的map 如何修改Map中的对应元素
- Map中的值如何输出
- 面向对象编程:Java中的抽象数据类型——转载
- 面向对象编程:Java中的抽象数据类型——转载
- 面向对象编程:Java中的抽象数据类型——转载
- C++抽象编程——STL(6)——map类的简单使用
- 编程中的抽象
- C#—抽象方法
- C#中的抽象
- javaweb—jstl如何循环List中的Map数据
- C++抽象编程——STL实战(2)——查找与修改
- C++——map
- 如何遍历Map集合中的值
- bzoj2431: [HAOI2009]逆序对数列
- Codeforces Round #408 (Div. 2)(A+B)模拟
- ruby 解决 php aes 与 ruby aes zero 算法不用的问题
- MySQ基本操作
- 留言板实例-验证ID和邮箱
- C++抽象编程——如何修改map中的值
- 图像技术分类一图通
- C语言中变量的存储方式
- IO 编程模型(java篇) 精华一页纸
- 用openssl实现DES和AES算法时遇到的小问题
- 线性回归(linear regression)
- 头疼的算法与数据结构——八皇后问题(递归法)
- json与Dictionary 传输对比
- 深入理解Aop编程思想