需要在find上使用std :: set元素的位置/索引

时间:2012-05-21 01:39:57

标签: c++

我使用std :: set来排序无序重复值的向量。每当我在集合中找到一个元素时,我也需要知道元素的位置(索引)。我的集合中有很多元素(数十万个),使用std :: distance()给我带来了糟糕的表现。

std :: distance是唯一的出路吗?

1 个答案:

答案 0 :(得分:-1)

您可以使用std :: sort()算法对元素进行排序。然后当你使用binary_search()在向量中找到一个元素时,只需从指向该元素的迭代器中减去对begin()的调用结果。

如果您不想覆盖原始矢量,另一种方法是使用std :: partial_sort_copy()。只需排序成另一个向量,你可以做我上面描述的相同的事情。