我需要一个map
其键是某种复合类型的映射本身T
的迭代器向量。
(例如,考虑一个图,其中每个节点都包含指向其父节点的迭代器。)
我避免将父母的键存储为值的原因是键是昂贵的对象,所以我想存储迭代器。
这样的事情可能吗?
如果没有,最好的选择是什么?
(我知道我可以使用多态性和类型擦除作为解决此问题的蛮力方法,但我想知道是否有更好的方法。)
由于 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;
};
(所有类型和尺寸都是已知的)
您很可能希望存储指向父级的智能指针而不是迭代器。