我想有两个结构指向彼此。具体来说,我想有以下几点:C++相互模板依赖?
template<typename Key, typename Value>
class MyStructure {
public:
typedef map<Key, list<pair<Value, typename ListType::iterator>>> MapType;
typedef list<typename MapType::element_type::iterator> ListType;
private:
MapType map_;
ListType list_;
}
显然这不起作用,因为以前没有将ListType声明为类型。我怎么能这样做?正如你所看到的,我使用迭代器类型作为指向这两个结构元素的指针。
我正在考虑使用奇怪的循环模板模式,但无法获得任何地方。有人在## C++也建议使用模板别名,但也失败了(至少,我不知道如何使用这个想法)。
我从概念上做错了什么?或者“也许不符合C++概念”?我当然可以用void * s来做到这一点,但我试图让事情成为正确的方式:)
谢谢!
那个数据结构对我来说是无稽之谈。我的意思是在大多数情况下已经比使用'list'更无意义了。 (你实际上试图用这个数据结构来完成什么?) – 2012-03-08 07:59:54
这是一个[重复](http://stackoverflow.com/q/9595420/777186)? – jogojapan 2012-03-08 08:05:28
我想要一个地图,给定一个键,有一个值列表。这些值在列表中也有表示,我将其用于其他目的。目的是能够以插入顺序迭代所有地图的元素,而不是本地地图存储它们的顺序。 编辑:比利:我做了一个小小的改变,也许结构现在更有意义了?现在,ListType元素指向的是地图中某个列表中的元素。 – 2012-03-08 08:11:29