标准库stable_sort()
#include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std; struct Item { string name; int num; }; int compare_item_0(Item item1, Item item2) { return item1.num < item2.num; } int compare_item_1(Item item1, Item item2) { return item1.num > item2.num; } int main() { vector<Item> items; int num, flag; while (cin >> num >> flag) { items.clear(); for (int i = 0; i != num; i++) { Item item; cin >> item.name >> item.num; items.push_back(item); } if (flag == 1) { stable_sort(items.begin(), items.end(), compare_item_0); } else if (flag == 0) { stable_sort(items.begin(), items.end(), compare_item_1); } for (int i = 0; i != items.size(); i++) { cout << items[i].name << " " << items[i].num << endl; } } return 0; }