我有一个程序,我在其中编写自定义类是为了某种目的我需要以类似于map的数据结构的形式存储这些类,这样就可以轻松地获得与另一个类对应的项。例如:

class Rectangle{
//...
};
class ShapeContainer{
//...};
class WarpedRectangle{
//...
};
class Adorner{
//...
};

上面是三个不同的类,在我的程序中,我尝试做以下事情:(以这里的map为例,因为它是最接近的)
地图输入输出地图;
地图输入变形地图;
地图;
操作1:
_inputOutputMap[inputRectangle1]=&shapeContainer1;
操作2:
_ inputWarpedMap[inputRectangle1]=&warpedRectangle1;
操作3:
返回inputWarpedMap[inputRectangle1]
操作4:
_ AdornerArpedMap[Adorner1]=&warpedRectangle1;
操作5:
return\u装饰器arpedmap[装饰器1]
注意,使用map的目的不是为了得到任何排序顺序、比较或诸如此类的结果,而是为了保持不同项之间的对应关系[对于这个输入,即输出等]。如果我试图继续使用映射本身,则在编译期间,stl_function.h(function:struct less : public binary_function<_Tp, _Tp, bool>)中的某个地方会出现错误,并突出显示消息:
二进制表达式(const adorner和const adorner)等的操作数无效。
如何获取满足我的需求的此类通信和查找属性?

最佳答案

你试过使用std::unordered_map吗?无论如何,对于这个用例应该比std::map快。
(请注意,仍然需要确保键对象支持相等比较才能正常工作,或者需要提供执行相同操作的外部谓词函数)。

07-24 21:54