【发布时间】:2013-10-17 16:29:20
【问题描述】:
我需要做以下事情:
鉴于int 中的std::vector,我需要将每个int 替换为对向量进行排序时所在的索引。
我会尝试用一个例子更好地解释它。
输入:{22, 149,31}
输出:{2, 0, 1}
(请注意,在排序向量 {149, 31, 22} 中,22 在排序向量的 index 2 中,149 在 index 0,31 在 index 1)
我希望我把算法说清楚。
这是在 STL C++11 库中以某种方式实现的吗?这个算法有名字吗?你能提供任何想法来优雅地实现它吗?
【问题讨论】:
-
我不知道它有名字,但它与this question非常相似。看起来你是在降序排序,但除此之外它基本上是同样的问题。
-
这叫做“用比较函数排序”。您可以使用比较函数中的索引值对索引进行排序。
-
如果您的输入是
{22, 149, 31, 149},您希望输出是什么?