| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Сортировка вектора |
| Автор: Berkut 13.4.2004, 15:07 |
| Как отсортирвать вектор типа структура: struct A { int x,y; } vector<A> abc; abc.sort( ????????? например по полю х. |
| Автор: mr.DUDA 13.4.2004, 15:32 | ||||
| Есть два варианта. Первый: сортировка с помощью единственного оператора сравнения, встраиваемого в класс (тогда нельзя будет выбрать, по какому полю сортировать и т.п.):
Второй вариант - более гибкий, с использованием 3-го аргумента функции "sort" (функциональный объект либо указатель на сравнивающую функцию):
|
| Автор: Berkut 13.4.2004, 16:19 |
| Сделал вторым способом, но вот такая ошибка появляется: error C2039: 'sort' : is not a member of 'vector<struct A,class std::allocator<struct A> >' |
| Автор: sergejzr 13.4.2004, 16:28 |
| mr.DUDA Неплохо! А алгоритм сортировки можно указать? |
| Автор: Berkut 13.4.2004, 16:46 |
| |
| Автор: achmed 13.4.2004, 16:55 |
| очевидно вы пишите abc.sort() вместо sort(abc.begin(),end()), у vector нет встроеного вектора сортировки, вместо этого исп-ся std::sort - для для итераторов произвольного доступа |
| Автор: Berkut 13.4.2004, 17:20 |
| |
| Автор: mr.DUDA 13.4.2004, 18:21 | ||
Да, кстати совсем забыл напомнить - для удобства записи, в моём примере используются "сокращённые" имена STL:
Добавлено @ 18:26 2 sergej.z, Алгоритм сортировки сильно зависит от реализации STL. Это может быть как простейшая "пузырьковая" сортировка, так и более навёрнутый алгоритм. |
| Автор: Fantasist 14.4.2004, 00:29 | ||
Обычно это все-таки quick sort, как я думаю. C другой стороны, не сложно и свой sort написать. |