Сборка выдаёт ошибки C++ Visual Studio 2019 [закрыт]

354
12 мая 2022, 09:10
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.

Закрыт 1 год назад.

Улучшить вопрос

Ошибки в файле algorythm:

Ошибка C2676 бинарный "-": "const std::_List_unchecked_iteratorstd::_List_val<std::_List_simple_types<_Ty>>" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору Lab9 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\algorithm 4138
Ошибка C2672 "_Sort_unchecked": не найдена соответствующая перегруженная функция Lab9 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\algorithm 4138
Ошибка C2780 void std::_Sort_unchecked(_RanIt,_RanIt,iterator_traits<_Iter>::difference_type,_Pr): требует аргументов: 4, имеется: 3 Lab9 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\algorithm 4138

Мой код

#include <iostream>
#include <list>
#include <algorithm>
using namespace std;
class Taburetka {
public:
    string material;
    string country;
    int size;
    Taburetka(string material, string country, int size) {
        this->material = material;
        this->country = country;
        this->size = size;
    }
    string getCountry() {
        return country;
    }
    
    string getMaterial() {
        return material;
    }
    
    int getSize() {
        return size;
    }
    void PrintObj() {
        cout << material << " " << country << " " << size << endl;
    }
};
struct comp {
    bool operator()(const Taburetka& a, const Taburetka& b)const {
        return a.size < b.size;
    }
};
void Sort_Size(list<class Taburetka> TAB) {
}
void Print_Vector_Class(list<class Taburetka>) {
}
int main(){
    list<class Taburetka> name;
    Taburetka doski("doski", "Finnland", 4);
    Taburetka nozhki("nozhki", "Kazakhstan", 4);
    name.push_back(doski);
    name.push_back(nozhki);
    for_each(name.begin(), name.end(), [](Taburetka x) {
        x.PrintObj();
        });
    sort(name.begin(), name.end(), comp()); 
    cout << endl;
    for_each(name.begin(), name.end(), [](Taburetka x) {
        x.PrintObj();
        });
    cout << endl;
    string material;
    cout << "material?" << endl;
    cin >> material;
    for_each(name.begin(), name.end(), [material](Taburetka x) {
        if (material == x.material) {
            x.PrintObj();
        }
        });
}

как исправить?

Answer 1

Дело в том, что list имеет двунаправленные итераторы, а алгоритм sort требует итераторы произвольного доступа. Чтобы отсортировать list используйте функцию-член этого класса:

name.sort(comp());
Answer 2

Алгоритм ::std::sort требует итераторов с произвольным доступом, которых контейнер ::std::list не предоставляет. Используйте ::std::vector или yo

READ ALSO
Преобразование const char [] в String

Преобразование const char [] в String

Допустим, есть такой код:

191
алгоритм с sort плохо работает

алгоритм с sort плохо работает

Написал алгоритм который должен сортировать числа в порядке возрастанияВвод через 1 строку

249
fstream в Visual studio

fstream в Visual studio

Пытаюсь я считать число из файла и сразу же вывести его в консоль, а выводиться неинициализированный участок памяти, а все данные из файла...

163
Поиск минимума в очереди C++

Поиск минимума в очереди C++

Реализую поиск минимума в очереди, но столкнулся с проблемой, что на больших массивах слишком долго работаетПодскажите, пожалуйста, можно...

188