Вы можете перегрузить operator<
, чтобы сравнить нужный элемент, а затем использовать std::sort
.
#include <algorithm>
class Foo
{
public:
int num;
int other;
};
bool operator<(const Foo& x, const Foo& y)
{
return x.num < y.num;
}
int main()
{
Foo bar[10] = {{1, 5}, {9, 2}, {3, 0}, {5, 7}, {1, 3}, {6, 4}, {10, 8}, {0, 9}, {6, 2}, {3, 5}};
std::sort(bar + 0, bar + 10);
}
Обратите внимание, что для инициализации Foo
нужны два числа, а не только то, которое вас интересует при сортировке.
Если вы не можете или не хотите перегружать operator<
для Foo
, другие опции включают передачу старого доброго указателя функции стиля C или объекта функции стиля C ++ в качестве третьего параметра std::sort
.