Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/25: Рейтинг темы: голосов - 25, средняя оценка - 4.64
11 / 11 / 0
Регистрация: 13.10.2012
Сообщений: 163
1

Сортировка списка с использованием std::sort

06.02.2014, 04:04. Показов 5001. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Что-то не получается отсортировать целочисленные данные расположенные в списке, компилятор (VS10) жутко ругается. В чем может быть дело?

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
#include <conio.h>
#include <string>
#include <list>
#include <algorithm>
 
using namespace std;
 
template <class T>
class Hot
{
public:
    void operator()(const T &obj){cout<<" "<<obj;}
 
    //bool operator< (T const &lhs, T const &rhs){return (lhs<rhs)}
};
 
 
typedef list<int> integer;
typedef Hot<int> print;
//typedef Hot<int> sorts;
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    int val=0;
    integer num;
    print doPrint;
    //sorts doSort;
    cout<<"#Создаем список на 30 элементов."<<endl;
 
    cout<<"\n#Записываем числа в список:"<<endl;
    for(int i=0; i<30; i++)
    {
        val=rand()%100+1;
        num.push_back(val);
        cout<<" "<<val;
    }
 
    cout<<"\n#Выводим содержимое списка:"<<endl;
    for_each(num.begin(), num.end(), doPrint);
 
    cout<<"\n#Сортируем список."<<endl;
    sort(num.begin(), num.end());
 
    cout<<"\n#Выводим содержимое списка после сортировки:"<<endl;
    for_each(num.begin(), num.end(), doPrint);
 
    getch();
    return 0;
}
Под спойлером ошибки:
Кликните здесь для просмотра всего текста
Ошибка 12 error C2676: бинарный "-": "std::_List_iterator<_Mylist>" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm 3642
Ошибка 13 error C2780: void std::_Sort(_RanIt,_RanIt,_Diff,_Pr): требует аргументов: 4, имеется: 3 c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm 3642
Ошибка 7 error C2784: _Base1::difference_type std::operator -(const std::_Revranit<_RanIt,_Base> &,const std::_Revranit<_RanIt2,_Base2> &): не удалось вывести аргумент шаблон для "const std::_Revranit<_RanIt,_Base> &" из "std::_List_iterator<_Mylist>" c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm 3642
Ошибка 8 error C2784: _Base1::difference_type std::operator -(const std::_Revranit<_RanIt,_Base> &,const std::_Revranit<_RanIt2,_Base2> &): не удалось вывести аргумент шаблон для "const std::_Revranit<_RanIt,_Base> &" из "std::_List_iterator<_Mylist>" c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm 3642
Ошибка 9 error C2784: _Base1::difference_type std::operator -(const std::_Revranit<_RanIt,_Base> &,const std::_Revranit<_RanIt2,_Base2> &): не удалось вывести аргумент шаблон для "const std::_Revranit<_RanIt,_Base> &" из "std::_List_iterator<_Mylist>" c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm 3642
Ошибка 10 error C2784: _Base1::difference_type std::operator -(const std::_Revranit<_RanIt,_Base> &,const std::_Revranit<_RanIt2,_Base2> &): не удалось вывести аргумент шаблон для "const std::_Revranit<_RanIt,_Base> &" из "std::_List_iterator<_Mylist>" c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm 3642
Ошибка 11 error C2784: _Base1::difference_type std::operator -(const std::_Revranit<_RanIt,_Base> &,const std::_Revranit<_RanIt2,_Base2> &): не удалось вывести аргумент шаблон для "const std::_Revranit<_RanIt,_Base> &" из "std::_List_iterator<_Mylist>" c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm 3642
Ошибка 2 error C2784: reverse_iterator<_RanIt>::difference_type std::operator -(const std::reverse_iterator<_RanIt> &,const std::reverse_iterator<_RanIt2> &): не удалось вывести аргумент шаблон для "const std::reverse_iterator<_RanIt> &" из "std::_List_iterator<_Mylist>" c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm 3642
Ошибка 3 error C2784: reverse_iterator<_RanIt>::difference_type std::operator -(const std::reverse_iterator<_RanIt> &,const std::reverse_iterator<_RanIt2> &): не удалось вывести аргумент шаблон для "const std::reverse_iterator<_RanIt> &" из "std::_List_iterator<_Mylist>" c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm 3642
Ошибка 4 error C2784: reverse_iterator<_RanIt>::difference_type std::operator -(const std::reverse_iterator<_RanIt> &,const std::reverse_iterator<_RanIt2> &): не удалось вывести аргумент шаблон для "const std::reverse_iterator<_RanIt> &" из "std::_List_iterator<_Mylist>" c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm 3642
Ошибка 5 error C2784: reverse_iterator<_RanIt>::difference_type std::operator -(const std::reverse_iterator<_RanIt> &,const std::reverse_iterator<_RanIt2> &): не удалось вывести аргумент шаблон для "const std::reverse_iterator<_RanIt> &" из "std::_List_iterator<_Mylist>" c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm 3642
Ошибка 6 error C2784: reverse_iterator<_RanIt>::difference_type std::operator -(const std::reverse_iterator<_RanIt> &,const std::reverse_iterator<_RanIt2> &): не удалось вывести аргумент шаблон для "const std::reverse_iterator<_RanIt> &" из "std::_List_iterator<_Mylist>" c:\program files (x86)\microsoft visual studio 10.0\vc\include\algorithm 3642
Предупреждение 1 warning C4996: 'getch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getch. See online help for details. g:\ucheba\programs\list\list\main.cpp 58
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.02.2014, 04:04
Ответы с готовыми решениями:

Сортировка массива c++ std :: sort()
Дан двумерный массив символов char M, надо отсортировать его при помощи std :: sort(), построчно,...

Сортировка индексов алгоритмом std::sort
Есть два массива одинаковой размерности. В одном хоть что, во втором целые числа (индексы элементов...

Std::sort сортировка вектора объектов
Добрый день. Пытаюсь выполнить сортировку вектора объектов с помощью функции сравнения ...

Сортировка вектора через std::sort
Доброго времени суток, интересует сабж void Sort(list&lt;int&gt; &amp;past) { sort(past.begin(),...

2
62 / 62 / 33
Регистрация: 14.01.2014
Сообщений: 145
06.02.2014, 04:39 2
Зачем ты полез в <algorithm>, если в контейнере list уже определена функция сортировки std::list::sort. Меняем
C++
1
sort(num.begin(), num.end());
на
C++
1
integer.sort()
Добавлено через 11 минут
Цитата Сообщение от vovacreme Посмотреть сообщение
Зачем ты полез в <algorithm>, если в контейнере list уже определена функция сортировки std::list::sort. Меняем
C++
1
sort(num.begin(), num.end());
на
C++
1
integer.sort()
А версия sort из <algorithm> не работает для контейнера list, потому что его итераторы не обеспечивают произвольный доступ к элементам, в которых, как раз таки нуждается функция sort.
1
Форумчанин
Эксперт CЭксперт С++
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
06.02.2014, 05:14 3
Если список здесь используется в контексте лишь в значении "набор" и не обяхует использовать соответствующий контейнер или схожий с ним по функционалу, то рекомендовал бы использовать либо vector (совместо с std::sort), либо std::set (тогда даже сортировать не нужно).

Преимущества списка (константная по времени вставка в любое место) здесь вы не используете все равно.
0
06.02.2014, 05:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.02.2014, 05:14
Помогаю со студенческими работами здесь

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

Сортировка массива структур по выбранному полю с помощью алгоритма std::sort
Не знаю, как правильно передать функцию сравнения в std::sort. Кроме того в моей структуре...

Почему стандартная сортировка вектора std::sort намного быстрее сортировки вставками/пузырьком?
Здравствуйте, объясните, пожалуйста, как реализована std::sort. Ясно, что через итераторы, но...

Сортировка массива с использованием алгоритма стандартной библиотеки шаблонов Sort()
6.Напишите программу на языке программирования С++, сортирующую массив с использованием алгоритма...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru