STL排序保留原始订单

lea*_*arn 1 c++ stl c++11

我想按大小对字符串向量进行反向排序,约束条件是如果有2个相等长度的字符串,我希望它们保留原始顺序.例如:对以下字符串集进行排序: -

aab
aac
aacghgh
aabghgh
Run Code Online (Sandbox Code Playgroud)

应该产量: -

aacghgh
aabghgh
aab
aac
Run Code Online (Sandbox Code Playgroud)

目前我正在进行如下排序: -

struct comp_functor {
    bool operator()(const string& s1, const string& s2) {
        return s1.size() > s2.size();
    }
};

struct comp_functor c;
vector<string> vecs;
sort(vecs.begin(), vecs.end(), c);
Run Code Online (Sandbox Code Playgroud)

有没有办法在重载方法中指定我想保留原始排序,如果它们具有相同的长度?如果没有,那么使用STL库解决这个问题的最佳方法是什么?

Gor*_*gar 5

我相信你在找std::stable_sort.它保留了被认为相等的元素的顺序.