11 / 11 / 0
Регистрация: 13.10.2012
Сообщений: 163
|
||||||
1 | ||||||
Сортировка списка с использованием std::sort06.02.2014, 04:04. Показов 5001. Ответов 2
Метки нет (Все метки)
Что-то не получается отсортировать целочисленные данные расположенные в списке, компилятор (VS10) жутко ругается. В чем может быть дело?
Кликните здесь для просмотра всего текста
Ошибка 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
|
06.02.2014, 04:04 | |
Ответы с готовыми решениями:
2
Сортировка массива c++ std :: sort() Сортировка индексов алгоритмом std::sort Std::sort сортировка вектора объектов Сортировка вектора через std::sort |
62 / 62 / 33
Регистрация: 14.01.2014
Сообщений: 145
|
|||||||||||
06.02.2014, 04:39 | 2 | ||||||||||
Зачем ты полез в <algorithm>, если в контейнере list уже определена функция сортировки std::list::sort. Меняем
А версия sort из <algorithm> не работает для контейнера list, потому что его итераторы не обеспечивают произвольный доступ к элементам, в которых, как раз таки нуждается функция sort.
1
|
Форумчанин
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 | |
06.02.2014, 05:14 | |
Помогаю со студенческими работами здесь
3
Сортировка std::list с функцией sort() Сортировка массива структур по выбранному полю с помощью алгоритма std::sort Почему стандартная сортировка вектора std::sort намного быстрее сортировки вставками/пузырьком? Сортировка массива с использованием алгоритма стандартной библиотеки шаблонов Sort() Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |