Map的key为自定义结构体
来源:互联网 发布:淘宝开店之后怎么做 编辑:程序博客网 时间:2024/05/22 00:14
近日被问到Map的key为自定义结构体的情况,由于从未使用,特此测试验下,运行及总结情况如下。
#include "stdafx.h"
#include <map>
using namespacestd;
struct A
{
int a;
bool operator <(const A& rhs) const {
return a < rhs.a;
}
};
struct B
{
int b;
};
#include <iostream>
int main()
{
A sa1;
sa1.a = 10;
A sa2;
sa2.a = 20;
map<A,int> mp;
mp.insert(pair<A,int>(sa1, 30));
mp.insert(pair<A,int>(sa2, 60));
cout << mp[sa1]<< endl;
cout << mp[sa2]<< endl;
map<A,int>::iteratoriter = mp.find(sa1);
if (iter!= mp.end())
{
cout << "find sa1 := " << iter->second<< endl;
}
B sb1;
sb1.b = 100;
B sb2;
sb2.b = 200;
map<B*,int> pm;
pm.insert(pair<B*,int>(&sb1, 1200));
pm.insert(pair<B*,int>(&sb2, 2400));
cout << pm[&sb1]<< endl;
cout << pm[&sb2]<< endl;
sb2.b = 600;
map<B*,int>::iteratorbIter = pm.find(&sb2);
if (bIter!= pm.end())
{
cout << "find &sb2 := " << bIter->second<<endl;
}
return 0;
}
结论:
A: Key用结构体变量,需要重写排序函数。如果排序函数出错,整个Map序列错乱。
B: Key用结构体变量,不用担心键值被修改带来的影响。
C: 用指针,无需重写排序算法
D: 用指针,可以修改结构体的值,value的值不受影响。Find也不会受影响。
E: 用指针,有被delete的风险
- Map的key为自定义结构体
- key为自定义结构的map
- 自定义结构体做为map里面的key的写法
- 【C++】自定义结构体作为map的key
- STL map中key为结构体的用法
- STL map中key为结构体的用法
- STL map中key为结构体的用法
- STL map中key为结构体的用法
- STL map中key为结构体的用法
- map中key为结构体的用法
- STL map中key为结构体的用法
- STL map中key为结构体的用法
- STL map中key为结构体的用法
- map key值为结构的写法
- c++ map key为结构体
- map的key元素为结构体时该结构体需重截操作符<
- 自定义结构作为map的key,比较函数写法
- 自定义结构作为map的key,比较函数写法
- 接口小结
- 马尔科夫链 吸收概率方程组推导
- 友元类,友元函数
- 苹果4亿美元收购Shazam,大白菜终于被猪拱了!
- 476. Number Complement
- Map的key为自定义结构体
- javascript 出现Unexpected identifier问题
- android 自定义星级评分控件
- 无法使用数据库Can't connect to local MySQL server through socket
- Unity的包体压缩以及音效优化
- 几种文字匹配算法
- RecyclerView的功能扩展(Android图片选择器)
- 获取日期
- EMK 中moloch安装--抓取数据--碰到的错误