在c++中,检查一个数字是否已经添加到列表中,而不需要暴力搜索该列表
In C++, check if a number has already been added to a list, without brute force searching that list
假设我有一个二维矩阵,由vector<vector<double>> matrix
给出,并且matrix
已经初始化为R
行和C
列。
还有一个坐标列表(由说,N
(x,y)
对组成),我们要处理,这样对于每个坐标,我们得到一个映射到我们矩阵中的特定行(r
)和列(c
)。我们基本上有[r, c] = f(x,y)
。映射函数f
的特殊性并不重要。然而,我们想做的是,通过将它们插入到另一个名为索引列表的列表中,来跟踪所使用的行r
和列c
。
问题是,如果(r,c)
对已经存在于该列表中,我不想继续将相同的r
和c
添加到该列表中。蛮力方法将是每次我想检查时简单地扫描整个索引列表,但这将非常耗时。
你需要一个地图。
如果你使用c++11,你可以使用unordered_map,这是一个hashmap,有一个常数时间查找,如果你使用旧版本的c++,你可以使用标准的地图,这是一个树状地图,有一个对数查找。
代替map
或unordered_map
,您可以简单地使用矩阵vector<vector<bool>>
,其R
和C
与其他矩阵相同,每个字段初始化为false
。您只需将矩阵中相应的布尔值设置为true
,而不是将(r,c)
对添加到列表中。
相关文章:
- 如何在 sqlite3 中的表中添加整数列表
- 有什么方法可以将元素添加到列表中,如图所示?
- 测试驱动开发 c++:如何将对象添加到向量中,将歌曲添加到播放列表并对其进行测试
- 将新元素添加到列表中,并返回对该元素的引用?
- 可视化 如何将 CString 值列表添加到 MFC C++ 中的组合框中?
- 通过在带有 C++ 的列表中添加连续元素来计算新的整数列表
- CSUF EPP - 你有什么想法(在添加到链接列表末尾时遇到麻烦)
- 将集合的随机元素添加到列表中,然后将其从原始集合中移除
- 如何使用LLVM C++API向保留节点列表添加
- 是否可以使用OpenMP并行化一个列表,该列表可以在每次迭代中添加新元素
- 如何确保我的节点被添加到链接列表中
- 双链接列表添加元素不起作用,不知何故它总是保持为空
- 链接列表添加CPP
- 通过相邻顶点列表添加和减去图形中的边
- 向 C 样式可变参数列表添加额外的参数
- C ++ win 32,我想将项目列表添加到组合框中.我该怎么做
- 如何将QActions列表添加到QMenu并用单个插槽处理它们
- 将一个类的列表添加到另一个类
- 向列表添加项和迭代器问题
- C++向列表添加新的指针对象