为map的map定义别名

typedef alias for map of map

本文关键字:map 别名 定义      更新时间:2023-10-16

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

ClassA* a = MapOf_ptrMap[key1][key2]; with MapOf_ptrMap a map< string , ( map < string, ClassA* >)* > object.

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];