#include <vector> #include <algorithm> template<typename T> class vector_compare { public: vector_compare(size_t field): _field(field) { } bool operator () (const std::vector<T>& first, const std::vector<T>& second) const { // один из векторов слишком короткий, применяем стандартную процедуру if (first.size() <= _field || second.size() <= _field) return first < second; // иначе сортируем по столбцу return first[_field] < second[_field]; } protected: size_t _field; }; int main(int argc, char** argv) { std::vector< std::vector<int> > ints; // Вектор векторов size_t column; // Столбец для сортировки // Инициализация вектора векторов и номера столбца: вставить здесь // сортировка std::sort(ints.begin(), ints.end(), vector_compare<int>(column)); return 0; } |