为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用带有用户定义类型作为键的std:map?

如何使用带有用户定义类型作为键的std:map?

C++
郎朗坤 2019-06-26 16:57:57
如何使用带有用户定义类型作为键的std:map?我想知道为什么我不能在用户定义的类中使用STL映射。当我编译下面的代码时,我会得到以下神秘的错误消息。什么意思?另外,为什么它只发生在用户定义的类型上?(将基元类型用作键时是可以的。)C:\MinGW\bin..\lib\gcc\mingw32\3.4.5.\include\c++\3.4.5\bits\stl_function.h||In成员函数`boolstd:less<_tp>:Operator()(const_tp&,const_tp&)const[with_tp=Class 1]从`_tp和std:map<_key,_tp,_C:\MinGW\bin..\lib\gcc\mingw32\3.4.5.\include\c++\3.4.5\bits\stl_map.h|338|instantiated>:操作符[](const_key&)[With_key=Class 1,_tp=int,_Compare=std:less,_alloc=std:allocator>]‘C:\MinGW\bin..\lib\gcc\mingw32\3.4.5.\include\c++\3.4.5\bits\stl_map.h|338|instantiatedC:\Users\Admin\Documents\dev\sandbox\sandbox.cpp|24|instantiated从这里开始C:\MinGW\bin..\lib\gcc\mingw32\3.4.5.\include\c++\3.4.5\bits\stl_function.h|227|error:不匹配“运算符<”中的“_x<_y‘\x=生成已完成:1错误,0警告=x#include <iostream>#include <map>using namespace std;class Class1{public:     Class1(int id);private:     int id;};Class1::Class1(int id): id(id){}int main(){     Class1 c1(1);     map< Class1 , int> c2int;     c2int[c1] = 12;     return 0;}
查看完整描述

3 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

默认情况下std::map(和std::set)使用operator<来确定分类。因此,您需要定义operator<在你的课上。

两个物体被认为等价物 if !(a < b) && !(b < a).

如果出于某种原因,您希望使用不同的比较器,则使用map可以更改std::greater例如。


查看完整回答
反对 回复 2019-06-26
  • 3 回答
  • 0 关注
  • 586 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信