1

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

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

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

操作 1
_inputOutputMap[inputRectangle1] = &shapeContainer1;
操作 2
_inputWarpedMap[inputRectangle1] = &warpedRectangle1;
操作 3
返回 _inputWarpedMap[inputRectangle1]
操作 4
_adornerWarpedMap[adorner1] = &warpedRectangle1;
操作 5
返回 _adornerWarpedMap[adorner1]

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

我怎样才能根据我的要求获得这种类型的对应和查找属性?

4

1 回答 1

0

Have you tried using std::unordered_map? Should be faster than std::map for this use case anyway.

(Note that you will still need to ensure that the key objects support an equality comparison for this to work, or you need to provide an external predicate function that does the same thing).

于 2013-06-19T19:41:08.923 回答