#include <vector>
#include <utility>
#include <algorithm>
#include <functional>
#include <iostream>
using namespace std;
int main() {
vector<pair<int, int>> vec;
for (int i = 0; i < 10; i++) {
vec.push_back(make_pair(10 - i, 0));
}
auto vecsort = [&vec] {
sort(vec.begin(), vec.end(),
[] (pair<int, int> const &a, pair<int, int> const &b) {
return a.first < b.first;
});
};
// vecsort will work as long as vec is in scope.
// vecsort will modify the original vector.
vecsort();
for (auto i : vec) {
std::cout << '(' << i.first << ", " << i.second << ") ";
}
std::cout << endl;
vec.push_back(make_pair(-42, 0));
vecsort();
for (auto i : vec) {
std::cout << '(' << i.first << ", " << i.second << ") ";
}
std::cout << endl;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHV0aWxpdHk+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxmdW5jdGlvbmFsPgojaW5jbHVkZSA8aW9zdHJlYW0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CgoJdmVjdG9yPHBhaXI8aW50LCBpbnQ+PiB2ZWM7Cglmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpKyspIHsKCSAgICB2ZWMucHVzaF9iYWNrKG1ha2VfcGFpcigxMCAtIGksIDApKTsKCX0KCgkgYXV0byB2ZWNzb3J0ID0gWyZ2ZWNdIHsKCSAgCXNvcnQodmVjLmJlZ2luKCksIHZlYy5lbmQoKSwgCgkgIAlbXSAocGFpcjxpbnQsIGludD4gY29uc3QgJmEsIHBhaXI8aW50LCBpbnQ+IGNvbnN0ICZiKSB7CiAgICAgICAgICAgIHJldHVybiBhLmZpcnN0IDwgYi5maXJzdDsKICAgICAgICB9KTsKCSB9OwoKICAgIC8vIHZlY3NvcnQgd2lsbCB3b3JrIGFzIGxvbmcgYXMgdmVjIGlzIGluIHNjb3BlLgogICAgLy8gdmVjc29ydCB3aWxsIG1vZGlmeSB0aGUgb3JpZ2luYWwgdmVjdG9yLgogICAgdmVjc29ydCgpOwoJZm9yIChhdXRvIGkgOiB2ZWMpIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgJygnIDw8IGkuZmlyc3QgPDwgIiwgIiA8PCBpLnNlY29uZCA8PCAiKSAiOwogICAgfQogICAgc3RkOjpjb3V0IDw8IGVuZGw7CiAgICAKICAgIHZlYy5wdXNoX2JhY2sobWFrZV9wYWlyKC00MiwgMCkpOwogICAgdmVjc29ydCgpOwoJZm9yIChhdXRvIGkgOiB2ZWMpIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgJygnIDw8IGkuZmlyc3QgPDwgIiwgIiA8PCBpLnNlY29uZCA8PCAiKSAiOwogICAgfQogICAgc3RkOjpjb3V0IDw8IGVuZGw7Cn0=
(1, 0) (2, 0) (3, 0) (4, 0) (5, 0) (6, 0) (7, 0) (8, 0) (9, 0) (10, 0)
(-42, 0) (1, 0) (2, 0) (3, 0) (4, 0) (5, 0) (6, 0) (7, 0) (8, 0) (9, 0) (10, 0)