Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/56: Рейтинг темы: голосов - 56, средняя оценка - 4.68
3 / 3 / 0
Регистрация: 10.11.2009
Сообщений: 102

list sort()

21.11.2011, 21:28. Показов 11915. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста.
Есть упрощенный класс
C++
1
2
3
4
5
6
7
8
class NOTE 
    {
    public:
        char name[m];
        char surname[m];
        char phoneNumber[12];
        int birthday[3];
}
и создается список по шаблону
C++
1
list <NOTE> L;
Подскажите как реализовать(вроде можно через предикат, но я не понимаю как) L->sort() для данного списка, чтобы отсортировать записи по фамилии(surname)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.11.2011, 21:28
Ответы с готовыми решениями:

Сортировка std::list с функцией sort()
У меня задание написать Отсортировать числовую последовательность в порядке возрастания количества делителей её элементов, используя...

Не работает sort с предикатом для list в VS2010
Компилит, но в ходе выполнения ошибка. http://i67.***********/big/2014/1130/0c/ff16385e785d46f0ae1e155ed656ec0c.jpg Функция сравнения: ...

(STL LIST SORT) Сортировка по некольким критериям
Здравствуйте! Столкнулся с такой проблемой при сортировке списка. %-) Есть структура: struct PackObject { bool ...

6
 Аватар для OstapBender
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
21.11.2011, 21:34
C++
1
2
3
4
5
bool listPred(NOTE n1, NOTE n2) {
return strcmp(n1.surname,n2.surname);
}
 
std::sort(L.begin(),L.end(),listPred);
0
3 / 3 / 0
Регистрация: 10.11.2009
Сообщений: 102
21.11.2011, 21:51  [ТС]
К сожалению данный вариант выдает ошибку, что error C2065: listPred: необъявленный идентификатор, хотя я добавил в класс
0
Заблокирован
21.11.2011, 22:01
Цитата Сообщение от WASAW Посмотреть сообщение
Подскажите пожалуйста.
Есть упрощенный класс
C++
1
2
3
4
5
6
7
8
class NOTE 
    {
    public:
        char name[m];
        char surname[m];
        char phoneNumber[12];
        int birthday[3];
}
и создается список по шаблону
C++
1
list <NOTE> L;
Подскажите как реализовать(вроде можно через предикат, но я не понимаю как) L->sort() для данного списка, чтобы отсортировать записи по фамилии(surname)
У вас есть две возможности. Либо для вашего класса определить оператор-функцию operator < и тогда вызывать метод класса std::list sort без предиката (нельзя вызывать обобщенный алгоритм std::sort, так как он требует итератор произвольного доступа, а списки не имеют такого итератора), либо написать любую функцию, подобную оператор-функции, и тогда вызывать метод sort с предикатом.

Пример оператор функции


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include   <list>
#include   <cstring>
 
 
class NOTE 
    {
    public:
        char name[m];
        char surname[m];
        char phoneNumber[12];
        int birthday[3];
};
 
bool operator <( const NOTE &x, const NOTE &y )
{
   return ( std::strcmp( x.surname, y.surname ) < 0 );
}
 
int main()
{
   std::list<NOTE> L;
   ...
 
   L.sort( L.begin(), L.end() );
}
0
3 / 3 / 0
Регистрация: 10.11.2009
Сообщений: 102
21.11.2011, 22:27  [ТС]
error C2601: operator <: недопустимые локальные определения функций

error C2660: std::list<_Ty>::sort: функция не принимает 2 аргументов
0
 Аватар для OstapBender
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
22.11.2011, 00:16
код полностью покажи.
0
Заблокирован
22.11.2011, 00:23
Цитата Сообщение от WASAW Посмотреть сообщение
error C2601: operator <: недопустимые локальные определения функций

error C2660: std::list<_Ty>::sort: функция не принимает 2 аргументов
\

Может быть я поспешил в функцию-член класса list вставлять два итератора. Скорей всего она сортирует весь список. Так что итераторы в качестве аргументов следует убрать.

Что касается первой ошибки, то нужно смотреть, что вы там написали.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.11.2011, 00:23
Помогаю со студенческими работами здесь

Список(List) как отсортировать по убыванию используя функции reverse(); sort(); ао убыванию
Нужно отсортировать список по убыванию используя функции reverse(); и sort(); если можно фул прогу бо завтыкал тему чёто)))))

Sort(), третий параметр: как sort() выбирает аргументы из переданной последовательности для переданной функции?
Вот sotr() 2 параметра - итераторы, а третий функцию. Допустим, моя функция сортирует список по возрастанию сумм цифр числа. Как sort()...

Ошибка при компиляции undefined reference to `List<int>::List()'|
Доброго времени суток=) столкнулась с такой проблемой нужно написать шаблон класса. При компиляции выдает ошибку undefined reference to...

Как пройти по List, отыскать дубликаты и записать их в другой List?
Добрый вечер, у меня есть List из 10 элементов, мне необходимо найти в нем все повторяющиеся элементы и записать в другой List. Если вместо...

Invalid operands of types 'List*' and 'List*' to binary 'operator+'
Я создал список из 4 елементов( 3.5.1.9)и выбивает такая ошибка когда хочу посчитать сумму предпоследнего и последнего елемента.Помогите...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru