Форум программистов, компьютерный форум CyberForum.ru

Сортировка вектора сложного класса (Просто для тех кто знает) - C++

Восстановить пароль Регистрация
 
tihonya
11 / 7 / 1
Регистрация: 30.05.2012
Сообщений: 107
08.09.2012, 11:45     Сортировка вектора сложного класса (Просто для тех кто знает) #1
Есть класс:

C++
1
2
3
4
5
6
7
8
9
class Tovar
{
protected:  
    Date_class expiry;
    string articul, name, catigory,barcode;
    double price;
public:
/*............................................*/
};
Date_class - это сложный класс даты с указателем на структуку tm, конструктор копирования в нем переопределен.

Как мне отсортировать вектор класса товар, например по articul, или по articul + barcode?

Проблема заключается в том что сортировка из библиотеки алгоритмов не может сравнить экземпляры Date_class. (скорее всего)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2012, 11:45     Сортировка вектора сложного класса (Просто для тех кто знает)
Посмотрите здесь:

кто знает алгоритм для такого задания?? C++
C++ с рисунком для интеллектуалов кто знает как решит задачу на си??
C++ кто-нибудь знает где скачать русификатор для dev-c++?
Метод для прохода по вектору сложного класса определения и удаления не нужных элементов C++
C++ Для тех кто делает оконные приложения в Builder C++ Borland
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
08.09.2012, 11:51     Сортировка вектора сложного класса (Просто для тех кто знает) #2
Перегрузите операторы сравнения.
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
08.09.2012, 11:58     Сортировка вектора сложного класса (Просто для тех кто знает) #3
перегрузить операторы сравнения, а для алгоритма сортировки написать функцию компаратор
tihonya
11 / 7 / 1
Регистрация: 30.05.2012
Сообщений: 107
08.09.2012, 12:44  [ТС]     Сортировка вектора сложного класса (Просто для тех кто знает) #4
Вот прямо сейчас перегружаю,
Цитата Сообщение от panicwassano Посмотреть сообщение
... написать функцию компаратор
а вот это не понял??
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
08.09.2012, 13:27     Сортировка вектора сложного класса (Просто для тех кто знает) #5
Цитата Сообщение от tihonya Посмотреть сообщение
а вот это не понял??
C++
1
2
3
4
5
6
int compare(const Class &one, const Class &two)
{
  // возвращает +1, если one < two
  //             0, если one = two
  //            -1, если one > two
}
tihonya
11 / 7 / 1
Регистрация: 30.05.2012
Сообщений: 107
08.09.2012, 13:33  [ТС]     Сортировка вектора сложного класса (Просто для тех кто знает) #6
Перегрузил операторы, все получилось!
и без compare.
soon, - Спасибо.

Хотя все равно не понимаю зачем там compare и куда его совать, и механизм использования..?..
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
08.09.2012, 14:02     Сортировка вектора сложного класса (Просто для тех кто знает) #7
Некоторые обобщённые сортировалки не умеют operator<, operator> и operator==, поэтому требуют вот таких функций, которые передаются внутрь них как аргумент.
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
08.09.2012, 14:38     Сортировка вектора сложного класса (Просто для тех кто знает) #8
Цитата Сообщение от tihonya Посмотреть сообщение
Проблема заключается в том что сортировка из библиотеки алгоритмов не может сравнить экземпляры Date_class. (скорее всего)
Из личного опыта: перегрузка операторов это зло.

Лучше переопределить функцию сортировки для либы которой пользуетесь.
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
08.09.2012, 15:25     Сортировка вектора сложного класса (Просто для тех кто знает) #9
outoftime, Перегрузка дает коду понятности +10 но требует от проггера память 20 и альфа рук 90 или 180.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
08.09.2012, 16:12     Сортировка вектора сложного класса (Просто для тех кто знает) #10
Цитата Сообщение от outoftime Посмотреть сообщение
Из личного опыта: перегрузка операторов это зло.
М-да? Никогда не пользуйтесь std::cout << "Something". Зло должно понять, что с ним не желают иметь дела.

Цитата Сообщение от Invader_Zim Посмотреть сообщение
Перегрузка дает коду понятности +10 но требует от проггера память 20 и альфа рук 90 или 180
А память зачем?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2012, 16:18     Сортировка вектора сложного класса (Просто для тех кто знает)
Еще ссылки по теме:

C++ Для тех кто имеет опыт по ОПП
C++ Кто может написать методы класса поиск и сортировка?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
08.09.2012, 16:18     Сортировка вектора сложного класса (Просто для тех кто знает) #11
Цитата Сообщение от soon Посмотреть сообщение
А память зачем?
Чтобы помнить о побочных эффектах, навешенных на операторы, и правилах неявного приведения типов.
Yandex
Объявления
08.09.2012, 16:18     Сортировка вектора сложного класса (Просто для тех кто знает)
Ответ Создать тему
Опции темы

Текущее время: 23:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru