为map的map定义别名
typedef alias for map of map
一个非常简单的问题,但是我没有找到答案。我想这样做:
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];
相关文章:
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 部分定义/别名模板模板参数
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 使用一个考虑到std::map中键值的滚动或换行的键
- 如何在C++20中创建模板别名的推导指南
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 允许从 std::map 的密钥窃取资源?
- 告诉c++编译器该参数没有别名
- 有没有办法对std::unordered_set、std::unrdered_map、std::set、std::map
- 将重物插入std::map
- boost::spirit::karma 替代生成器,带有 boost::variant 由字符串和字符串别名组成
- 继承模板类中的类型别名
- 使用通用值初始化 std::map,不重复
- 别名模板的专业化 C++11 中没有开销的最佳替代方案
- 仅包含可移动 std::map 的类的移动构造函数不起作用
- 为什么 GCC 在使用类型别名时处理 const reinterpret_cast不同?
- C++:当所有条目都保证是唯一时,替代 std::map
- 使用模板化的键类型定义 std::map,该键类型基于作为参数接收的函数
- 如果 KEY 是 std::list 或 std::vector 而不是值,那么 std::map 的默认行为是什么?
- 为map的map定义别名