一尘不染

C ++排序跟踪索引

algorithm

您是否有一些有效的例程来返回带有索引的数组,该索引用于数组中已排序的元素?我认为使用stl
vector存在一些方便的方法。您是否已经在没有stl的情况下实现了高效的算法,或者您是否对伪代码或C ++代码有所了解?

感谢致敬


阅读 308

收藏
2020-07-28

共1个答案

一尘不染

使用C ++ 11,以下方法应该可以正常工作:

template <typename T>
std::vector<size_t> ordered(std::vector<T> const& values) {
    std::vector<size_t> indices(values.size());
    std::iota(begin(indices), end(indices), static_cast<size_t>(0));

    std::sort(
        begin(indices), end(indices),
        [&](size_t a, size_t b) { return values[a] < values[b]; }
    );
    return indices;
}
2020-07-28