[英]c++ vector manipulation
我正在嘗試刪除向量中最大的 int 元素並將其插入到新向量中。我已經有一個表示向量中最高數字的 int 和一個表示該數字的 position 的 int。
這是我的代碼:
vector2.push_back(highest);
vector1[highestpos] = vector1[vector1.size()-1];
vector1[vector1.size()-1] = highest;
vector1.pop_back();
但它返回一個錯誤。 這段代碼有什么問題嗎?
編輯::::::這里有更多我的代碼。 我得到的錯誤是一個斷言錯誤,表示向量下標超出范圍。
while(vector1.size() > 0)
{
highest = 0;
for (int i = 0; i < vector1.size(); i++)
{
if (vector1[i] > highest)
{
highest = vector1[i];
int highestpos = i;
}
}
vector2.push_back(highest);
vector1[highestpos] = vector1[vector1.size()-1];
vector1[vector1.size()-1] = highest;
vector1.pop_back();
}
根據編輯,問題在於highestpos
內的最高位置(分配了i
的值)與highestpos
外的最高位置不同。
試試std::cout << highestpos << '\n';
就在vector1[highestpos] =...
之前
(使用max_element()
代替手寫循環來確定最大值並vector1.erase()
從向量中刪除也可能會有所幫助,盡管擦除可能確實比 swap+pop_back 效率低)
int highestpos = i;
您只是在循環內定義一個變量。 它不會改變循環外變量的值。 改成:
highestpos = i;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.