需要 std::set 元素的位置/索引

Need the position/index of a std::set element on find

本文关键字:位置 索引 元素 std set 需要      更新时间:2023-10-16

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

std::d istance是唯一的出路吗?

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

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