簡體   English   中英

c++ 矢量操作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM