#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 行出現錯誤: Keine Instanz von überladen Funktion "std::vector<_Ty, _Alloc>::insert [mit _Ty=int, _Alloc=std::allocator]" stimmt mit der Argumentliste überein
由于我是編碼新手,我不確定為什么會發生此錯誤。
uj5u.com熱心網友回復:
insert以及將第一個引數作為第一個引數的erase方法,而不是簡單的整數,這大致是編譯器回傳的錯誤的感覺。它沒有找到任何版本的第一個引數。std::vectoriteratorinsertint
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))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/476932.html
上一篇:如何正確包含.asm檔案?
下一篇:按物件值對陣列進行排序
