3

我需要一个map其键是某种复合类型的映射本身T的迭代器向量。 (例如,考虑一个图,其中每个节点都包含指向其父节点的迭代器。)

我避免将父母的存储为值的原因是键是昂贵的对象,所以我想存储迭代器。

这样的事情可能吗?
如果没有,最好的选择是什么?

(我知道我可以使用多态性和类型擦除作为解决此问题的蛮力方法,但我想知道是否有更好的方法。)

4

2 回答 2

4

由于 23.2.1 一般容器要求:

Containers are objects that store other objects. They control allocation
and deallocation of these objects through constructors, destructors, 
insert and erase operations.

因此有可能:

struct Key;
struct Value;
typedef std::map<Key, Value> Map;

struct Key {};
struct Value {
    std::vector<Map::iterator> parents;
};

(所有类型和尺寸都是已知的)

于 2013-09-04T11:54:55.697 回答
0

您很可能希望存储指向父级的智能指针而不是迭代器。

于 2013-09-04T09:26:38.990 回答