排序算法在更改向量中的对象时创建错误消息
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
的 insert
和 erase
方法将 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))
#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
的 insert
和 erase
方法将 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))