c++ - STL 映射到自身?

标签 c++ stl map containers

我想创建一个 std::map,其中包含一个 std::vector 迭代器,以实现一个简单的基于邻接列表的图形结构.

但是,类型声明让我很困惑:您似乎需要整个映射类型定义来获取所述映射的迭代器类型,如下所示:

map< int, Something >::iterator MyMap_it;  // what should Something be?
map< int, vector<MyMap_it> > MyMap_t;

是否有某种部分映射迭代器类型我可以只使用键类型来获得,所以我可以声明完整映射?

最佳答案

您可以使用新类型的前向声明。

class MapItContainers;
typedef map<int, MapItContainers>::iterator MyMap_it;

class MapItContainers
{
public:
 vector<MyMap_it> vec;
};

使用这种间接方式,编译器应该可以让你摆脱它。 它不是很漂亮,但老实说,我认为你不能轻易打破 self 引用。

关于c++ - STL 映射到自身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1403501/

相关文章:

c++ - 是否需要 `void_t` 来检查类是否具有具有特定签名的方法?

c++ - C 和 C++ 构建过程的区别

c++ - 用户定义数组的函数

c++ - 带有尾随注释的多行预处理器宏

c++ - 如何在 C++ 中更改拉丁 UTF-8 字符串的大小写?

c++ - 避免标准容器中元素的默认构造

c++ - C++ 迭代器的生命周期和有效性是多少?

c++ - 翻转 map 键值对

c++ - 如何使用Google Protobuf实现Map结构

c++ - C++ 中的存在映射