存储和检索相应的项目

时间:2013-06-19 19:37:17

标签: c++ algorithm map

我有程序,我出于某种目的编写自定义类。我需要以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)等。

如何根据我的要求获得此类通信和查找属性?

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用std::unordered_map?无论如何,对于这个用例,应该比std::map更快。

(请注意,您仍然需要确保关键对象支持相等比较才能生效,或者您需要提供执行相同操作的外部谓词函数。)