我有一个多维映射。假设:
std::map<std::string,
std::map<std::string,
std::map<std::string, std::list<std::string>>>> my_map;
我的问题是:访问"内部"映射(对象)的正确方法是什么?我不谈论价值观。我知道它们可以通过
访问my_map["key1"]["key2"]....
我指的是尺寸。我怎样才能得到第二张地图的大小。这是正确的做法吗?:
my_map.begin()->second.size()
访问"内部"映射的正确方法是什么?
没有内部映射。有许多内部地图。m_map["key1"]
是一个内映射,m_map["key2"]
是另一个内映射。对于外部地图上的每个键,都有一个新的内部地图。这些地图彼此之间没有关系——它们有相同的类型,仅此而已。
my_map.begin()->second.size()
将打印第一个键对应的内部映射的大小,m_map["key1"].size()
将打印"key1"
对应的内部映射的大小。
如果您确定内部map
存在,或者您打算创建它,您可以这样做:
my_map["key1"].size();
对于最内部的map
:
my_map["key1"]["key2"].size();
如果不知道内部map
是否存在,并且不想创建它,则必须使用find
:
const auto it = my_map.find("key1");
const auto size = it = my_map.end() ? 0 : it->size();
对于最内部的map
,将是:
const auto it = my_map["key1"].find("key1");
const auto size = it = my_map["key1"].end() ? 0 : it->size();