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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
tihonya
11 / 7 / 1
Регистрация: 30.05.2012
Сообщений: 107
#1

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

08.09.2012, 11:45. Просмотров 579. Ответов 10
Метки нет (Все метки)

Есть класс:

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
C++ Для тех кто имеет опыт по ОПП
C++ Кто может написать методы класса поиск и сортировка?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
2537 / 1302 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
08.09.2012, 11:51     Сортировка вектора сложного класса (Просто для тех кто знает) #2
Перегрузите операторы сравнения.
panicwassano
591 / 559 / 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
~ Эврика! ~
1243 / 992 / 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
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
08.09.2012, 14:02     Сортировка вектора сложного класса (Просто для тех кто знает) #7
Некоторые обобщённые сортировалки не умеют operator<, operator> и operator==, поэтому требуют вот таких функций, которые передаются внутрь них как аргумент.
outoftime
║XLR8║
506 / 428 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
08.09.2012, 14:38     Сортировка вектора сложного класса (Просто для тех кто знает) #8
Цитата Сообщение от tihonya Посмотреть сообщение
Проблема заключается в том что сортировка из библиотеки алгоритмов не может сравнить экземпляры Date_class. (скорее всего)
Из личного опыта: перегрузка операторов это зло.

Лучше переопределить функцию сортировки для либы которой пользуетесь.
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
08.09.2012, 15:25     Сортировка вектора сложного класса (Просто для тех кто знает) #9
outoftime, Перегрузка дает коду понятности +10 но требует от проггера память 20 и альфа рук 90 или 180.
soon
2537 / 1302 / 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++
Процедуры в С++ (для тех, кто знает и Pascal, и C++) C++
Написать функцию для класса, возращающую данный из вектора обьектов класса по итератору вектора C++

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

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

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