Используя пользовательский компаратор.
struct CustomLess {
size_t idx;
CustomLess(size_t i) : idx(i) {}
bool operator()(Custom const& a, Custom const& b) const {
return a.key[idx] < b.key[idx];
}
};
затем
std::sort(myvec.begin(), myvec.end(), CustomLess(1)); // for 1
Примечание: я не использовал шаблон, потому что, хотя использование шаблона позволяет компилятору оптимизировать для этого конкретногоindex, он не позволяет вам выбирать индекс во время выполнения, например, на основе пользовательского ввода, поэтому он менее гибок / не может делать столько же, сколько нетекстовая версия.И как мы все знаем, преждевременная оптимизация - это зло:)