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