11 / 7 / 1
Регистрация: 30.05.2012
Сообщений: 113

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

08.09.2012, 11:45. Показов 1354. Ответов 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. (скорее всего)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.09.2012, 11:45
Ответы с готовыми решениями:

Процедуры в С++ (для тех, кто знает и Pascal, и C++)
Недавно начал учить С++ и столкнулся с такой вещью. Из того, что я понял, у С++ есть только функции, а процедур нет, хотя они есть, но...

Написать функцию для класса, возращающую данный из вектора обьектов класса по итератору вектора
День=добрый как написать функцию для класса возращающую данный из вектора обьектов класса по итератору вектора?? стока запроса: ...

Для тех кто знает и паскаль и с++
у меня есть программа на с, нужно её на паскаль переписать, просто с этим языком я мало знаком, а так вот все задание а ниже программа...

10
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
08.09.2012, 11:51
Перегрузите операторы сравнения.
1
601 / 569 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
08.09.2012, 11:58
перегрузить операторы сравнения, а для алгоритма сортировки написать функцию компаратор
0
11 / 7 / 1
Регистрация: 30.05.2012
Сообщений: 113
08.09.2012, 12:44  [ТС]
Вот прямо сейчас перегружаю,
Цитата Сообщение от panicwassano Посмотреть сообщение
... написать функцию компаратор
а вот это не понял??
0
~ Эврика! ~
 Аватар для OhMyGodSoLong
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
08.09.2012, 13:27
Цитата Сообщение от 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
}
0
11 / 7 / 1
Регистрация: 30.05.2012
Сообщений: 113
08.09.2012, 13:33  [ТС]
Перегрузил операторы, все получилось!
и без compare.
soon, - Спасибо.

Хотя все равно не понимаю зачем там compare и куда его совать, и механизм использования..?..
0
~ Эврика! ~
 Аватар для OhMyGodSoLong
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
08.09.2012, 14:02
Некоторые обобщённые сортировалки не умеют operator<, operator> и operator==, поэтому требуют вот таких функций, которые передаются внутрь них как аргумент.
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
08.09.2012, 14:38
Цитата Сообщение от tihonya Посмотреть сообщение
Проблема заключается в том что сортировка из библиотеки алгоритмов не может сравнить экземпляры Date_class. (скорее всего)
Из личного опыта: перегрузка операторов это зло.

Лучше переопределить функцию сортировки для либы которой пользуетесь.
0
Twilight Parasite
 Аватар для Invader_Zim
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
08.09.2012, 15:25
outoftime, Перегрузка дает коду понятности +10 но требует от проггера память 20 и альфа рук 90 или 180.
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
08.09.2012, 16:12
Цитата Сообщение от outoftime Посмотреть сообщение
Из личного опыта: перегрузка операторов это зло.
М-да? Никогда не пользуйтесь std::cout << "Something". Зло должно понять, что с ним не желают иметь дела.

Цитата Сообщение от Invader_Zim Посмотреть сообщение
Перегрузка дает коду понятности +10 но требует от проггера память 20 и альфа рук 90 или 180
А память зачем?
0
~ Эврика! ~
 Аватар для OhMyGodSoLong
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
08.09.2012, 16:18
Цитата Сообщение от soon Посмотреть сообщение
А память зачем?
Чтобы помнить о побочных эффектах, навешенных на операторы, и правилах неявного приведения типов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.09.2012, 16:18
Помогаю со студенческими работами здесь

Для тех, кто знает DBMS_SQL
Задача: обновить данные в табличке. Название таблички известно (например, test_1), а вот количество столбцов нет. Первые два столбца -...

Для тех кто знает рогалики
Есть рогалики которые запускаются в окне (ADOM, DF), но графика, как в консоли ASCII-шная. Я пытался сделать так же в окне. Но вот в чем...

Java FAQ: для тех кто знает (учил) С/С++
1. Строки сравниваются не при помощи оператора == а при помощи метода equals (&quot;a&quot; == &quot;a&quot;) == true...

для тех кто знает что такое МАН
решил написать в этом году МАН. Подскажите тему. Ну точнее хочу на МАН написать программу на винду, подскажите какую. И чтобы была нужная....

Для начинающих и просто тех кто любит программировать[Не актуально]
Просто у нас группа тех кому интересно программирование и компьютеры. Создаем проекты и коллективно совершенствуем навыки. не хотите к нам?...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

Новые блоги и статьи
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
PowerShell и онлайн сервисы. Валюта (floatrates.com руб.)
iNNOKENTIY21 11.11.2025
PowerShell функция floatrates-rub Примеры вызова: # Указанная валюта 'EUR' floatrates-rub -Code 'EUR' # Список имеющихся кодов валют floatrates-rub -Available function floatrates-rub {
PowerShell и онлайн сервисы. Погода (RP5.ru)
iNNOKENTIY21 11.11.2025
PowerShell функция Get-WeatherRP5rss для получения погоды с сервиса RP5 Примеры вызова Get-WeatherRP5rss с указанием id 5484 — Москва (восток, Измайлово) и переносом строки:. . .
PowerShell и онлайн сервисы. Погода (wttr)
iNNOKENTIY21 11.11.2025
PowerShell Функция для получения погоды с сервиса wttr Примеры вызова: Погода в городе Омск с прогнозом на день, можно изменить прогноз на более дней, для этого надо поменять запрос:. . .
PowerShell и онлайн сервисы. Валюта (ЦБР)
iNNOKENTIY21 11.11.2025
# Получение курса валют function cbr (] $Valutes = @('USD', 'EUR', 'CNY')) { $url = 'https:/ / www. cbr-xml-daily. ru/ daily_json. js' $data = Invoke-RestMethod -Uri $url $esc = 27 . . .
И решил я переделать этот ноут в машину для распределенных вычислений
Programma_Boinc 09.11.2025
И решил я переделать этот ноут в машину для распределенных вычислений Всем привет. А вот мой компьютер, переделанный из ноутбука. Был у меня ноут асус 2011 года. Со временем корпус превратился. . .
Мысли в слух
kumehtar 07.11.2025
Заметил среди людей, что по-настоящему верная дружба бывает между теми, с кем нечего делить.
Новая зверюга
volvo 07.11.2025
Подарок на Хеллоуин, и теперь у нас кроме Tuxedo Cat есть еще и щенок далматинца: Хочу еще Симбу взять, очень нравится. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru