c++ - STL 排序保留原始顺序

标签 c++ c++11 stl

<分区>

我想按大小对字符串 vector 进行反向排序,但如果有 2 个长度相等的字符串,我希望它们保持原来的顺序。例如:对以下字符串集进行排序:-

aab
aac
aacghgh
aabghgh

应该产生:-

aacghgh
aabghgh
aab
aac

目前我正在做如下排序:-

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);

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

最佳答案

我相信您正在寻找std::stable_sort . 它保留被视为相等的元素的顺序。

关于c++ - STL 排序保留原始顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49831353/

相关文章:

c++ - 如何清除输入行,而不仅仅是单个字符

c++ - 为什么 push_back 在包含 unique_ptr 的结构上成功,除非该结构具有自定义析构函数?

c++ - 如何让输出流稍后执行某些操作?

c++ - 帮助 std::find

c++ - sso 是否用于 std::string 以外的任何其他标准库容器?

numpy - 将 STL 转换为 numpy 数组

c++ - 随机打印出每个字符

c++ - 错误 : C2146: syntax error : missing ';' before identifier 'm_Employer' ,

c++ - 如何使用 C++ 将字符串附加到 HDF5 数据集?

c++ - 通过哈希值和谓词搜索 std::unordered_set