按第二个字段稳定地排
四条记录按 key 用 stable_sort 排序。
运行下面这段程序:
#include <algorithm>
#include <iostream>
#include <map>
#include <string>
#include <utility>
#include <vector>
using namespace std;
struct Rec {
string name;
int key;
};
const vector<Rec> ROWS = {{"阿岚", 2}, {"小满", 1}, {"阿泰", 2}, {"南风", 1}};
string names(const vector<Rec>& v) {
string s;
for (size_t i = 0; i < v.size(); i++) s += (i ? "/" : "") + v[i].name;
return s;
}
int main() {
vector<Rec> rows(ROWS.begin(), ROWS.end());
stable_sort(rows.begin(), rows.end(), [](const Rec& a, const Rec& b) { return a.key < b.key; });
cout << names(rows) << endl;
}
(本题用 g++ -std=c++17 -O0 编译。)