2014-03-31 61 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; 
相关问题