map双键-值对及特殊键值对
2016-07-28 11:15
323 查看
想着python里面的字典是多么的优美,然后想想c++里面要实现一个双键-值对,可以用来取代二维数组(没什么必要。。。)或者是一些具有不同类型横纵坐标的表。
my[make_pair(2, 2)]这个重载了[ ]操作符,如果键不存在则会先插入一个键为(2,2)的对象,然后将值赋为0。慎用!
可以用count函数来查看该键是否已经存在。存在为1,不存在为0。
my[make_pair(2, 2)]这个重载了[ ]操作符,如果键不存在则会先插入一个键为(2,2)的对象,然后将值赋为0。慎用!
可以用count函数来查看该键是否已经存在。存在为1,不存在为0。
#include <cstdio> #include <map> using namespace std; int main(){ map<pair<int, int>, int> my; printf("%d\n", my.size()); my.insert( make_pair( make_pair(1, 2), 3) ); printf("%d\n", my.size()); printf("value count %d\n", my.count(make_pair(2,2))); return 0; }
用char*作key
由于char*仅仅是一个指针,只存储了字符串内存的首地址,如果直接用一个char*来作为key,则变成了地址作为key而不是对应的字符串作为key,一个简单的方法就是利用string的构造函数将char*转成string对象。#include <cstdlib> #include <string> #include <map> #include <cstdio> using namespace std; char *name, *number; map<string, char*> phoneBook; //insert a new element name = (char*)malloc(21); number = (char*)malloc(21); scanf("%s%s", name, number); //name and number separated by a space phoneBook.insert(make_pair(name, number)); //query scanf("%s", name); if(phoneBook.find(name) == phoneBook.end()){ printf("Not found\n"); }else{ printf("%s=%s\n", name, phoneBook[name]); }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- android Google Map获取地理位置信息的方法
- Spark RDD API详解(一) Map和Reduce
- Python中map()函数浅析
- 关于指针的一些事情
- Android使用Google Map浅谈
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- Erlang中的映射组Map详细介绍
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结