排序算法在更改向量中的对象时创建错误消息

Sort Algorithm creates error message when changing objects in vector

#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 [with _Ty=int, _Alloc=std::allocator]”匹配参数列表

由于我是编码新手,所以我不确定为什么会出现此错误。

std::vector

inserterase 方法将 iterator 作为第一个参数,而不是简单的整数,这大致是您返回的错误的含义编译器。它找不到任何将 int 作为第一个参数的 insert 版本。

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))