2014-03-31 63 views
-1

在我的項目中,我正在使用stl庫和對象的雙轉接器。該程序假定刪除某些對象變量符合條件,但每次元素滿足要刪除的要求時,程序必須中止。這裏是我的程序的簡化版本如何從deque中刪除一個隨機元素

int main(){ 
    deque<Cars> card; 
    deque<Cars> iterator::iter 
    int count=0; 
    Cars car(14,15); 
    card.push_front(car); 
    Cars car(12,45); 
    card.push_front(car); 
    Cars car(15,60); 
    card.push_front(car); 
    Cars car(20,45) 
    card.push_front(car); 
    for(iter=card.begin();iter!=card.end();iter++){ 
     if(iter->getnum2()==60){ 
      card.erase(card.begin()+count); 

     } 
     count=count+1; 

    } 
    return 0; 

} 

普萊斯注意我在這在這個例子中,我正在做的ITER獲取getnum2使用雙端隊列適用於第2個數字爲每個我製作的汽車物品。

+0

使用[擦除remove慣用法(https://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Erase-Remove),而不是刪除當你迭代它們時,來自容器的元素。 – Praetorian

+0

答案已被刪除,因爲不僅呈現的代碼無效,還與* title *中的問題不匹配。沒有嘗試獲得一個隨機元素,儘管至少有一個用於刪除匹配元素的前提條件。 – WhozCraig

回答

2

你可以試試這個代碼:

for (iter = card.begin(); iter != card.end() ;) 
    (iter->getnum2() == 60) ? iter = card.erase(iter) : ++iter; 
相關問題