C++ 无法使用给定的数据类型构造多重映射

C++ 无法使用给定的数据类型构造多重映射,c++,data-structures,C++,Data Structures,我有自己的类“3DSolid”,我正在尝试将项目插入到多重贴图中 因此,我定义我的多重映射如下: std::multimap< 3DSolid, 3DSolid > &SolidsolidMapping; SolidsolidMapping.insert( std::make_pair( solid1, solid2 ) ); bool operator<( const 3DSolid& _Left, const 3DSolid& _Righ

我有自己的类“3DSolid”,我正在尝试将项目插入到多重贴图中 因此,我定义我的多重映射如下:

std::multimap< 3DSolid, 3DSolid > &SolidsolidMapping;
    SolidsolidMapping.insert( std::make_pair( solid1, solid2 ) );
bool operator<( const 3DSolid& _Left, const 3DSolid& _Right )
{
    return _Left < _Right;
}
其中solid1和solid2是我的类3DSolid的对象

所以,现在我得到一个关于“bool Multimap是一个关联容器,包含排序的 键-值对,同时允许使用同一键的多个条目


如果无法对项目进行排序,则
多重映射
不是您想要的。如果您的项目没有有意义的比较函数,请尝试一个明确无序的结构,例如。这种区别的原因是像随机访问这样的操作在已排序的数据集上效率更高。

其他人已经解释了为什么不应该使用
multimap
,而应该使用
unsorted\u multimap

然后,我没有得到任何编译错误。但当我运行我的程序时,它 撞车

程序崩溃的原因是,重载运算符递归地调用self,并由于递归调用而导致堆栈溢出。看


bool operator只是想构造一个未排序的多重映射。我不关心“操作符”Gaurav Sehgal:我尝试使用数据结构,STD::unSoReToSyMultIAP,但我仍然会出错,因为我使用的类对象不是典型的C++类对象,不能定义不同的< 3>代码>之间的排序,不能使用需要排序的容器。(<代码> map ,<代码> MultIAPP等),“不是典型C++类对象”是什么意思?我应该能够使用“unSosith-MultIAP”,对吗?
bool operator<( const 3DSolid& _Left, const 3DSolid& _Right )
{
    return _Left < _Right;
}
bool operator<( const 3DSolid& _Left, const 3DSolid& _Right )
{
    return _Left.getBar() < _Right.getBar();
}