存储和检索相应的项

Store and retrieve corresponding items

本文关键字:检索 存储      更新时间:2023-10-16

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

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

以上是三个不同的类,在我的程序中,我尝试做以下事情:(以map为例,因为它是最接近的)
地图_inputOutputMap;地图_inputWarpedMap;地图_adornerWarpedMap;

操作1 :
_inputOutputMap[inputRectangle1] = & shapeccontainer1;
操作2 :
_inputWarpedMap[inputRectangle1] = &warpedRectangle1;
操作 3 :
返回_inputWarpedMap [inputRectangle1]
操作4 :

操作5 :
返回_adornerWarpedMap [adorner1]

请注意,使用map的目的不是为了获得任何排序顺序,比较或诸如此类,而只是为了保持各种项目之间的对应关系[对于此输入,即输出等]。如果我尝试继续使用映射本身,我会在编译期间在stl_function.h (function: struct less : public binary_function<_Tp, _Tp, bool>)中得到一个错误,并突出显示消息:
二进制表达式(const Adorner和const Adorner)等无效的操作数

如何为我的需求获得这种类型的通信和查找属性?

你试过使用std::unordered_map吗?无论如何,在这个用例中应该比std::map更快。

(注意,您仍然需要确保键对象支持相等比较,否则您需要提供一个外部谓词函数来做同样的事情)。