Алгоритм сортировки создает сообщение об ошибке при изменении объектов в векторе

#include<vector>;
using namespace std;

int main() {
vector<int>Liste;                       
Liste = { 5,2,3,6,3,4,7 };              
int n = Liste.size();                   
int i, j, k_1, k_2 ;                    
int m_1, m_2 ;                          
for (i; i = 0; i = n - 1) {             
    k_1 = i;                            
    m_1 = Liste[i];                     
    for (j; j = i + 1; j = n) {         
        if (Liste[j] < m_1) {           
            k_2 = j;                    
            m_2 = Liste[j];             
        }
    Liste.insert(k_1, m_2);             
    Liste.insert(k_2 + 1, m_1);         
    Liste.erase(k_1+1);                 
    Liste.erase(k_2 + 2);               
    }
}
cout << Liste << endl;
return 0;
}

При запуске кода возникает ошибка в строке 19,20,21,22: Ключевой момент для дополнительной функции "std::vector<_Ty, _Alloc>::insert [mit _Ty=int, _Alloc=std::allocator]" вводится в список аргументов выше

Поскольку я новичок в кодировании, я не уверен, почему возникает эта ошибка.

Аргумент местоположения для insert и erase является итератором, а не индексом.

Pete Becker 17.05.2022 19:51
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
2
1
22
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

insert и erase методы std::vector принимают iterator в качестве первого параметра, а не простое целое число, это примерно смысл ошибки, возвращаемой вашим компилятором. Он не находит ни одной версии insert, которая принимает int в качестве первого параметра.

https://www.cplusplus.com/reference/vector/vector/insert/

В любом случае вы можете использовать этот метод для достижения того, что вы хотите сделать:

Liste.insert(Liste.begin() + k_1, m_2);             
Liste.insert(Liste.begin() + (k_2 + 1), m_1);         
Liste.erase(Liste.begin() + (k_1 + 1));                 
Liste.erase(Liste.begin() + (k_2 + 2))  

Другие вопросы по теме