在近期工作中,使用自定义对象作为Map键时出现数据覆盖问题。经排查,发现问题根源并成功解决,现将经验总结分享,以供参考。
1、 将自定义的JKeyPair对象作为map容器的键时,需重载operator
2、 定义JKeyPair后,需进一步实现其对象的具体功能与细节。
3、 定义一个std::map容器,键为自定义对象JKeyPair,值为std::string类型,随后向该容器中插入数据,并进行效果验证。
4、 最终输出的map容器内容如下,所有信息均成功显示。
5、 此时,将map容器中第三个元素的键所对应的索引值调整为与第二个元素相同,即将其从3更改为2。
6、 输出结果显示,map容器仅有两个成员,其中第二个成员的值已被新值覆盖。
7、 为避免map中数据被覆盖,需修改自定义对象JKeyPair的operator
8、 修改完毕后重新执行程序,输出结果显示容器map的全部信息准确无误。
9、 自定义对象用作map键时,需重载小于运算符以保证有序性。
10、 实现小于运算符时,需全面比较对象的所有成员变量。
新浪科技公众号
“掌”握科技鲜闻 (微信搜索techsina或扫描左侧二维码关注)










