我有自己的课程“ 3DSolid”,我正在尝试将项目插入Multimap中 所以,我正在这样定义我的Multimap:
std::multimap< 3DSolid, 3DSolid > &SolidsolidMapping;
并且我要插入以下内容:
SolidsolidMapping.insert( std::make_pair( solid1, solid2 ) );
其中solid1和solid2是我的3DSolid类的对象。
因此,现在我得到一个关于“布尔<运算符”的错误消息:二进制<:找不到使用类型为const'3DSolid'...的左侧操作数的运算符。”
所以,我这样定义运算符:
bool operator<( const 3DSolid& _Left, const 3DSolid& _Right )
{
return _Left < _Right;
}
然后,我没有任何编译错误。但是,当我运行程序时,它崩溃了,因为我定义的运算符没有任何意义。我只想构造一个未排序的Multimap。我不关心“运算符<”。
如果有人可以在代码中建议我的更改,我将非常高兴 提前致谢。
答案 0 :(得分:0)
来自cppreference.com(突出显示的地雷):
Multimap是一个关联容器,包含已排序列表的 键值对,同时允许使用同一键输入多个条目。
如果您无法对项目进行排序,则multimap
不是您想要的。如果您的项目没有有意义的比较功能,例如unordered multimap,请尝试使用显式无序的结构。产生这种区别的原因是,诸如随机访问之类的操作在排序后的数据集上效率更高。
答案 1 :(得分:0)