map介绍
- 使用map得包含map类所在的头文件
#include <map>
- 定义一个map对象:
map<string,int> mapTest; //用string作为索引,存储int对象 <key,value>
插入数据
1. mapTest["aaa"] = 100;
2. mapTest.insert(map<string,int>::value_type("bbb",200));
3. mapTest.insert(pair<string,int>("ddd",400));
4. mapTest.insert(make_pair<string,int>("ccc",300));
插入到map容器内部的元素默认是按照key从小到大来排序
这就要求key运算符一定要重载‘<’运算符
int main(void)
{
map<string, int> mapTest;
mapTest["aaa"] = 100;
mapTest["aaa"] = 1000; //!<中括号可以更新value的值
mapTest["eee"] = 500;
mapTest.insert(map<string, int>::value_type("bbb", 200));
mapTest.insert(map<string, int>::value_type("bbb", 2000)); //!<不允许插入
mapTest.insert(pair<string, int>("ddd", 400));
mapTest.insert(pair<string, int>("ddd", 4000)); //!<不允许插入
mapTest.insert(make_pair<string, int>("ccc", 300));
mapTest.insert(make_pair<string, int>("ccc", 3000)); //!<不允许插入
map<string, int>::const_iterator it;
for (it = mapTest.begin(); it != mapTest.end(); ++it)
{
cout << it->first << '\t' << it->second << endl;
}
return 0;
}
输出结果:
查找与修改
1. mapTest["aaa"] = 100;
2. map<string,int>::iterator it = mapTest.find("aaa");
3. it->second = 666;
int main(void)
{
map<string, int> mapTest;
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));
int n = mapTest["bbb"]; //访问bbb所对应的值
mapTest["bbb"] = 2000; //修改bbb所对应的值
map<string, int>::iterator it;
it = mapTest.find("ccc"); //查找索引ccc
if (it != mapTest.end()) //找到了索引ccc
{
it->second = 3000;
}
else //未找到索引ccc
{
cout << "not found" << endl;
}
for (it = mapTest.begin(); it != mapTest.end(); ++it)
{
cout << it->first << '\t' << it->second << endl;
}
return 0;
}
输出结果:
删除
1. mapTest.erase("aaa");
2. mapTest.erase(it);
int main(void)
{
map<string, int> mapTest;
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));
mapTest.erase("bbb");
map<string, int>::iterator it;
it = mapTest.find("ccc");
if (it != mapTest.end())
{
mapTest.erase(it);
}
for (it = mapTest.begin(); it != mapTest.end(); ++it)
{
cout << it->first << '\t' << it->second << endl;
}
return 0;
}
输出结果: