0

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

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

4

1 回答 1

-1

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

如果您不想覆盖原始向量,另一种选择是使用 std::partial_sort_copy() 。只需排序到另一个向量中,您就可以执行我上面描述的相同操作。

于 2012-05-21T01:49:37.347 回答