我必须按长度对字符串进行排序。例如:
输入:“保持冷静,继续编码”
预期输出:“开启并保持冷静的代码”
第一个比较器是: return s1.length()<=s2.length();
输出:"On and code calm keep“
第二个比较器是: return s1.length()
输出:“开启并保持冷静代码”
输出如何随两个比较器中相等的变化而变化。我搞不懂比较器函数是如何在内部工作的。
发布于 2020-07-30 01:42:39
使用std::stable_sort。它不会改变相等元素的顺序。
std::vector<std::string> vec = { "Keep" , "calm", "and", "code", "on" };
std::stable_sort(vec.begin(), vec.end(), [](const std::string& s1, const std::string& s2) { return s1.size() < s2.size(); });
for (const auto& v : vec) {
std::cout << v << std::endl;
}
Output:
on
and
Keep
calm
codehttps://stackoverflow.com/questions/63159097
复制相似问题