c++ - map of map 的 typedef 别名

标签 c++ dictionary alias

一个非常简单的问题,但我找不到答案。我想这样做:

ClassA* a = MapOf_ptrMap[key1][key2];使用 MapOf_ptrMap a map< string , ( map < string, ClassA* >)* >对象。

MapOf_ptrMap[key1]返回指向 map<string, ClassA*> 的指针对象(在这一点上我想让你知道这不是我设计的,我只是要处理它)。

我试过了 #define X[Key1][Key2] (*(X[Key1]))[Key2]但由于括号,它不起作用。我知道它适用于括号,但我宁愿保留括号。同样困扰我的是 define别名不采用 X 的类型考虑到:我想用 MapOf_ptrMap 检查输入类型类型。

有什么想法吗?

最佳答案

坦率地说,define 并不是“定义”类型的好方法。

改用typedef

为了我们的理智,让我们把它分解一下:

using namespace std;
typedef map<string, ClassA *> map_value_t;
typedef map<string, map_value_t *> map_t;

具有 std:: 限定类型的版本(意大利面条怪兽的意图):

typedef std::map<std::string, ClassA *> map_value_t;
typedef std::map<std::string, map_value_t *> map_t;

现在您应该能够声明类型为 map_t 的对象。

现在的问题是,我们如何从这个糟糕的结构中取出东西?

map_t &blah; // comes from somewhere else.

map_value_t *submap = blah[i];
ClassA *value = *submap[j];

关于c++ - map of map 的 typedef 别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15685461/

相关文章:

windows - 无法在 Windows 7 的 MinGW32 中创建简单的 Git 别名

c++ - 如何合并多个版本的gcda文件?

c++ - memcpy : access violation reading location 后崩溃

Python - 从字典列表中删除具有空值的字典

java - 如何在java中分割字符串后将其部分存储在字典中

C# 模仿 Python 字典语法的方法

linux - 是否可以在 linux 中的一系列命令中通过 SSH 从一个终端链接到另一个终端?

c++ - shuffle和random_shuffle c++有什么区别

c++ - 如何在 C 中将字节数组转换为 double?

git - 我可以在 git 中为 "pull --rebase"设置别名吗?