怎么样:map <t,vector <iterator =“”to =“”map =“”本身=“”>&gt;?</t,>

时间:2013-09-04 09:21:44

标签: c++ map stl iterator

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

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

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

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

2 个答案:

答案 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)

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