检查是否存在多维映射的元素的最快方法是什么

What is the fastest way to check if a element of a multidimensional map exist?

本文关键字:元素 方法 是什么 映射 是否 存在 检查      更新时间:2023-10-16

假设n是一些已知的固定数字。假设我像这样

制作n维图
map < int , map < int, map < /* ... */ < int, map< int, double > > /*...*/ > mymap;

速度是什么要检查是否存在元素mymap[a][b]...[n]

编辑:这个问题与副本不同,因为它将重复问题概括为任意维度。

与这样的东西(在此处仅用于演示目的):

bool exists = [&my_map](int i, int j) -> bool
{
    auto it = my_map.find(i);
    return it != my_map.end() && it->second.find(j) != it->second.end();
};

用法:

if (exists(i, j)) { /* ... */ }

对于递归情况,我将使用模板的过载集:

bool exists(const std::map<int, double>& m, int key)
{
    return m.find(key) != m.end();
}
template <typename... Args, typename ...Krgs>
bool exists(const std::map<int, Args...>& m, int key, Krgs ...keys)
{
    auto it = m.find(key);
    return it != m.end() && exists(it->second, keys...);
}