使用map得包含map类所在的头文件 #include <map>
这是哈希表的一种变种,采用key-value来存储,内部的数据结构是红黑树,所以必须指定key的类型
定义一个map对象: map<string, int> mapTest; //用string作为索引,存储int对象
插入数据有四种方式:
mapTest["aaa"] = 100;
mapTest.insert(map<string, int>::value_type("bbb", 200));
mapTest.insert(pair<string, int>("ddd", 400));
mapTest.insert(make_pair<string, int>("ccc", 300));
插入:
#include <map>
#include <string>
#include <iostream>
using namespace std;
int main(void)
{
// 插入到map容器内部的无素默认是按照key从小到大来排序。
// key类型一定要重载<运算符
map<string,int> mapTest;
//因为重载了[]运算符 接收的参数就是一个字符串类型
//第一步构造一个类 然后再把100赋值给它
//[]的重复插入能够更新原先的值
mapTest["aaa"] = 100; // int& operator[](const string& index);
mapTest["eee"] = 500;
mapTest["eee"] = 300;
//其他方法是根本不允许插入的
//第二种方法 构造一个类 然后插入
mapTest.insert(map<string,int>::value_type("bbb", 200));
mapTest.insert(map<string,int>::value_type("bbb", 2000));
//第三种方法 pair是一个类类型
mapTest.insert(pair<string,int>("ccc", 300));
mapTest.insert(pair<string,int>("ccc", 3000));
//第四种方法 make_pair返回的是pair对象
mapTest.insert(make_pair("ddd", 400));
mapTest.insert(make_pair("ddd", 4000));
//内部会按照key从小到大排序的 所以key会重载<运算符
map<string,int>::const_iterator it;
for (it=mapTest.begin(); it!=mapTest.end(); ++it)
{
cout<<it->first<<" "<<it->second<<endl;
}
return 0;
}
查找与修改:
#include <map>
#include <string>
#include <iostream>
using namespace std;
int main(void)
{
// 插入到map容器内部的无素默认是按照key从小到大来排序。
// key类型一定要重载<运算符
map<string,int> mapTest;
mapTest["aaa"] = 100; // int& operator[](const string& index);
mapTest.insert(map<string,int>::value_type("bbb", 200));
mapTest.insert(pair<string,int>("ccc", 300));
mapTest.insert(make_pair("ddd", 400));
//如果是不存在的 就是返回0
int n = mapTest["bbb"];
cout<<n<<endl;
mapTest["bbb"] = 2000;
//上面的方法有缺陷 因为没找到返回值是n 而n是返回0的!
map<string,int>::iterator it;
it = mapTest.find("ccc");
if (it != mapTest.end())
{
it->second = 3000;
}
else
{
cout<<"not found"<<endl;
}
//map<string,int>::const_iterator it;
for (it=mapTest.begin(); it!=mapTest.end(); ++it)
{
cout<<it->first<<" "<<it->second<<endl;
}
return 0;
}
删除:
mapTest.erase(“aaa”);
mapTest.erase(it);
#include <map>
#include <string>
#include <iostream>
using namespace std;
int main(void)
{
// 插入到map容器内部的无素默认是按照key从小到大来排序。
// key类型一定要重载<运算符
map<string,int> mapTest;
mapTest["aaa"] = 100; // int& operator[](const string& index);
mapTest.insert(map<string,int>::value_type("bbb", 200));
mapTest.insert(pair<string,int>("ccc", 300));
mapTest.insert(make_pair("ddd", 400));
mapTest.erase("bbb");
map<string,int>::const_iterator it;
it = mapTest.find("ccc");
if (it != mapTest.end())
{
mapTest.erase(it);
}
for (it=mapTest.begin(); it!=mapTest.end(); ++it)
{
cout<<it->first<<" "<<it->second<<endl;
}
return 0;
}