C++多维地图:如何访问'inner'地图?

C++ multidimensional map: How to acces 'inner' maps?

本文关键字:地图 inner 访问 C++ 何访问      更新时间:2023-10-16

我有一个多维映射。假设:

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();