我有程序,我出于某种目的编写自定义类。我需要以map
类似数据结构的形式存储类,我可以轻松地获得与另一个相对应的项目。例如:
class Rectangle{
//...
};
class ShapeContainer{
//...};
class WarpedRectangle{
//...
};
class Adorner{
//...
};
以上是三个不同的类,在我的程序中,我尝试按以下方式执行操作:(以map
为例,因为它是最接近的)
map _inputOutputMap;
map _inputWarpedMap;
map _adornerWarpedMap;
操作1 :
_inputOutputMap [inputRectangle1] =& shapeContainer1;
操作2 :
_inputWarpedMap [inputRectangle1] =& warpedRectangle1;
操作3 :
return _inputWarpedMap [inputRectangle1]
操作4 :
_adornerWarpedMap [adorner1] =& warpedRectangle1;
操作5 :
return _adornerWarpedMap [adorner1]
请注意,使用map
的目的不是为了得到任何排序,比较等,而是为了保持各种项目之间的对应关系[对于此输入,即输出等]。如果我尝试继续使用地图本身,我会在编译时在stl_function.h(函数:struct less : public binary_function<_Tp, _Tp, bool>
)中的某处出现错误,并突出显示消息:
二进制表达式的无效操作数(const Adorner和const Adorner)等。
如何根据我的要求获得此类通信和查找属性?
答案 0 :(得分:0)
您是否尝试过使用std::unordered_map
?无论如何,对于这个用例,应该比std::map
更快。
(请注意,您仍然需要确保关键对象支持相等比较才能生效,或者您需要提供执行相同操作的外部谓词函数。)