检查是否存在多维映射的元素的最快方法是什么
What is the fastest way to check if a element of a multidimensional map exist?
假设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...);
}
相关文章:
- 数组元素打印的递归方法
- 如何实现 Front() 方法以返回模板化双向链表C++的第一个元素?
- 有什么方法可以将元素添加到列表中,如图所示?
- 在向量中查找大于 0(或通常为 k)的最小元素的最佳方法是什么?
- C++将所有元素从矢量复制到地图/unordered_map的最佳方法
- 在C++中更改结构内部元素的方法?
- 通过作为指向 C++ 函数的指针传递来访问 std::array 元素的正确方法是什么?
- 有没有更快的方法可以在 std::vector 中插入元素
- 返回向量元素的 l 值的正确方法是什么?
- 按升序打印矢量的所有元素直到它为空而没有重复项的最有效方法是什么?
- C++去除前x个元素的有效方法,在不改变向量大小的情况下将第x+1个元素推到第一个
- 如何在不迭代的情况下对数组中的每个元素调用方法
- 是否有更有效的方法来检查元素是否在给定的区间内
- 这种获取模板参数包中最后一个元素的方法是否有隐藏的开销?
- 将__m256的奇怪元素提取到__m128中的有效(在锐龙上)方法?
- 为什么 memcpy() 是一种将元素添加到 'std::map' 的方法?
- 从长(且合理)稀疏向量中选择随机元素的最有效方法是什么?
- 如何使用返回第 n 个元素的方法创建元组
- 带有移除任何元素方法的c++堆
- 如何在带有input的map元素方法上使用std::for_each