map中所有元素都是pair,pair中第一个元素为key,第二个元素为value,所有元素会根据元素键值自动排序,效率高
优点:可以根据key值快速找到value值
map和multimap区别:
1.map不允许容器中有重复key值元素。
2.multimap允许容器中有重复key值元素。
#include
using namespace std;
#include
void printmap(map
for (map
cout << “key = " << (*it).first <<” "<< "value = " << (*it).second << endl;
//cout << "key = " << it->first << "value = " << it->second << endl;
}
cout << endl;
}
//仿生函数
class compareMap {
public:
bool operator()(int v1,int v2)const {
return v1 > v2;
}
};
int main()
{
map
m1.insert(pair(1,"唐僧")); m1.insert(pair (3, "孙悟空")); m1.insert(pair (2, "猪八戒")); m1.insert(pair (4, "沙僧")); map m2(m1);//拷贝构造 m2.insert(make_pair(5, "如来佛祖")); map m3; m3 = m2; //赋值 m3.insert(map ::value_type(6, "观音菩萨")); m3[7] = "托塔天王"; //用[]要注意:如果容器中已经存在该键值,会将该键值的内容修改掉 //而用insert函数插入相同的键值,会失败,不会修改原来键值的内容 cout << m3[8]; //用[]读取内容时,一定要确定键值存在,否则会重新创建一个值为0的对组元素插入到map中 //此处为空字符串 if (m1.empty()) { cout << "map1容器为空!"; } else { cout << "map1容器大小为:" << m1.size()< ::iterator pos = m3.find(4); if (pos != m3.end()) { cout << "key = " << pos->first << " " << "value = " << pos->second< m4; m4.insert(make_pair(2,'a')); m4.insert(make_pair(1, 'e')); m4.insert(make_pair(4, 'f')); m4.insert(make_pair(5, 'v')); for (map ::iterator it = m4.begin(); it != m4.end(); it++) { cout << "key = " << (*it).first << " " << "value = " << (*it).second << endl; } cout << endl; printmap(m1); printmap(m2); printmap(m3);
}
结果:
map1容器大小为:4
key = 4 value = 沙僧
1
key = 5 value = v
key = 4 value = f
key = 2 value = a
key = 1 value = e
key = 1 value = 唐僧
key = 2 value = 猪八戒
key = 3 value = 孙悟空
key = 4 value = 沙僧
key = 5 value = 如来佛祖
key = 2 value = 猪八戒
key = 4 value = 沙僧
key = 1 value = 唐僧
key = 2 value = 猪八戒
key = 3 value = 孙悟空
key = 4 value = 沙僧
key = 5 value = 如来佛祖
key = 6 value = 观音菩萨
key = 7 value = 托塔天王
key = 8 value =
E:cpptextDebugtext.exe (进程 16272)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
multiset和set除了区别以外使用方法一样。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)