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

152
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, в нее может попасть мусор и она не будет равна нулю, а может, например...

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

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

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

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

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

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

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

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

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

160