说到C++中的Map这个容器,如果你以前接触过其他高级编程语言,比如C#,Object-C等等,其实这个东西就是字典Dictionary。提供一种键值对,听说C++中的这个MAP底层是用红黑树这种很牛逼的数据结构实现的,红黑树大部分数据结构的书都会提到,但都会简单的一笔带过。因为真的不是人人都能学会的,,,
好了,接着说我们的map
1、要用这个map的话,你必须包含他的头文件
#include <map>
2、map的几个构造函数
map<keyType, valueType> mapName; //这里的keyType,valueType用你想要的键类型换掉,比如int、string等等
3、map如何添加数据
想定义一个map
map<int, string> GLmap ;
map添加元素一共有4中方式
第一种:GLmap.insert(make_pair<int, string>(1, "Steve Jobs")) ;
第二种:GLmap.insert(pair<int, string>(2, "Apple")) ;
第三种:GLmap.insert(map<int, string>::value_type(3, "Bill Gates") ;
第四种:GLmap[4] = "Microsoft" ;
4、添加完了数据元素,那么可以开始查找了
map提供了一个find函数,用来查找元素,这个函数的返回值是指向查找到的那个元素对应的迭代器,如果没有找到的话,find函数将会返回一个指向map尾部的迭代器
//这里说明一下,map一共有两个比较特殊的迭代器值,一个就是开始,另一个就是结束,比如GLmap.begin() 和GLmap.end()
map<int, stirng>::iterator GLiterator ; //定义一个迭代器
GLiterator = GLmap.find(2);
if(GLiterator != GLmap.end()) cout<<"find it" ;
else cout<<"can not find the key" ;
5、讲完了查找,那么如何删除呢?
map<int, stirng>::iterator GLiterator ; //定义一个迭代器
GLiterator = GLmap.find(2);
if(GLiterator != GLmap.end()) {
cout<<"find it" ;
GLmap.erase(GLiterator) ; //删除指定的元素,有一点需要注意,这样子用迭代器的删除元素的方法在迭代过程中是不能删除的
}
else cout<<"can not find the key" ;
6、迭代数据for (GLiterator =GLmap .begin(); GLiterator !=GLmap .end(); ++GLiterator ) {}
7、其他应用请参考C++手册
http://www.cplusplus.com/reference/map/map/