假设我有一个二维矩阵,由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)
对添加到列表中。