#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;
}