Ошибка функции sort()

92
11 сентября 2021, 04:40

В Microsoft Visual Studio Community 2019, V 16.3.2 при попытке компиляции кода С++ с участием функции sort() получаю квест:

// ConsoleApplication3.cpp : Microsoft Visual Studio Community 2019
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
int main()
{
    vector<double> temps;
    for (double temp; cin >> temp;)
        temps.push_back(temp);
    sort(temps[0], temps[1]);
}    
1>------ Сборка начата: проект: ConsoleApplication3, Конфигурация: Debug Win32 ------
1>ConsoleApplication3.cpp
1>C:\Program Files\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.23.28105\include\algorithm(3466,5): error C2672: "_Sort_unchecked": не найдена соответствующая перегруженная функция
1>C:\Program Files\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.23.28105\include\algorithm(3471): message : выполняется компиляция ссылки на экземпляр шаблон функции "void std::sort<_RanIt,std::less<void>>(const _RanIt,const _RanIt,_Pr)"
1>C:\Program Files\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.23.28105\include\algorithm(3471): message :         with
1>C:\Program Files\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.23.28105\include\algorithm(3471): message :         [
1>C:\Program Files\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.23.28105\include\algorithm(3471): message :             _RanIt=double,
1>C:\Program Files\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.23.28105\include\algorithm(3471): message :             _Pr=std::less<void>
1>C:\Program Files\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.23.28105\include\algorithm(3471): message :         ]
1>C:\Users\...\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp(15): message : выполняется компиляция ссылки на экземпляр шаблон функции "void std::sort<_Ty>(const _RanIt,const _RanIt)"
1>C:\Users\...\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp(15): message :         with
1>C:\Users\...\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp(15): message :         [
1>C:\Users\...\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp(15): message :             _Ty=double,
1>C:\Users\...\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp(15): message :             _RanIt=double
1>C:\Users\...\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp(15): message :         ]
1>C:\Program Files\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.23.28105\include\algorithm(3466,1): error C2893: Сбой при специализации функции-шаблона "void std::_Sort_unchecked(_RanIt,_RanIt,iterator_traits<_Iter>::difference_type,_Pr)".
1>C:\Program Files\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.23.28105\include\algorithm(3436): message : см. объявление "std::_Sort_unchecked"
1>C:\Program Files\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.23.28105\include\algorithm(3466,1): message : Со следующими аргументами шаблона:
1>C:\Program Files\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.23.28105\include\algorithm(3466,1): message : "_RanIt=_Iter"
1>C:\Program Files\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.23.28105\include\algorithm(3466,1): message : "_Pr=_Fn"
1>Сборка проекта "ConsoleApplication3.vcxproj" завершена с ошибкой.
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Что тут не так? Спасибо за любой совет.

Answer 1
sort(temps.begin(), temps.end());

или

sort(begin(temps), end(temps));

Что вы хотели добиться записью

sort(temps[0], temps[1]);

категорически не понимаю...

Answer 2

Если хотите вставить элементы так, чтобы вектор оказался отсортированным, то можете: с самого начала заполнения вставить на последнем месте нужный элемент. Для этого есть стандартный альгоритм:

vector<double> temps;   
for (double temp; cin >> temp;) {
    temps.push_back(temp);
    std::nth_element(temps.begin(), temps.end() - 1, temps.end());
}
READ ALSO
Переменные структуры при ее создании конструктором заполнены нулями или мусором?

Переменные структуры при ее создании конструктором заполнены нулями или мусором?

Все мы знаем, что если создать некую локальную переменную, например int a, в нее может попасть мусор и она не будет равна нулю, а может, например...

61
Удалить каждый второй элемент списка

Удалить каждый второй элемент списка

Вечер добрыйНужно написать функцию удаления каждого второго элемента списка

102
Ошибки при использовании функций из dll

Ошибки при использовании функций из dll

У меня есть своя dll библиотека, гдеh файл:

85
Как организовать структуру данных

Как организовать структуру данных

Пытаюсь в силу своих знаний написать движок дли игры в русские шашки на C++ (если точнее, уже по большей части написал)Требуется определить,...

94