我正在尋找最簡單的方法(算法?)將整個矢量推入隊列,然後刪除矢量。我認爲有幾種方法可以做到這一點,但我不確定哪個是最好的,或者它們是否都是正確的。選項1是使用vector.pop_back()
,但我不得不通過for
循環在這種情況下,這是不是因爲對象進入Vector中的隊列的順序並不重要把元素從矢量插入隊列,然後清除矢量
for(unsigned i = vector.size() - 1; i >= 0; i--){
queue.push(vector[i]);
vector.pop_back();
}
問題倒退
選項2是使用vector.erase()。也可以做我< vector.size()?因爲當我在網上找了通過矢量迭代我發現了很多我的!= vector.size(),而不是
for(unsigned i = 0; i < vector.size(); i++){
queue.push(vector[i]);
vector.erase[i];
}
我在這裏的問題是,如果我刪除向量[I],確實向量[I + 1]現在變成矢量[i]?或者矢量[i]變成空值?
我的第三個選項是隻刪除這一切在最後
for(unsigned i = 0; i < vector.size(); i++){
queue.push(vector[i]);
}
vector.erase(vector.begin(), vector.end());
只是爲了清楚起見,我不想擺脫矢量變量本身,只是空,將其放入後隊列,因爲它最終會存儲一堆新事物,一次又一次地轉儲到隊列中。
無符號值將始終是'> = 0',所以這是不行的。另外,如果矢量是空的,你將會有未定義的行爲。 while(!v.empty()){foo(v.back()); v.pop_back();}'。 – 2014-10-31 19:20:38