2016-08-18 37 views
1

我知道我們如何能夠從INT如何擦除物體矢量中的元素?

std::vector<int> vec; 
// .. put in some values .. 
int int_to_remove = n; 
vec.erase(std::remove(vec.begin(), vec.end(), int_to_remove), vec.end()); 

向量刪除元素,如果它有什麼一個vector<obj> vec其中obj是

class obj { 

int ID; 
string name; 

} 

我將如何卸下固定到某個ID的載體?

std::vector<obj> vec; 
// .. put in some values .. 
int id_to_remove = n; 
vec.erase(std::remove(vec.ID.begin(), vec.ID.end(), id_to_remove), vec.end()); 
+0

remove calls destructor –

回答

2

現在你正在尋找刪除匹配一定條件的對象,你需要使用std::remove_if,而不是std::remove

vec.erase(
    std::remove_if(
     vec.ID.begin() 
    , vec.ID.end() 
    , [](const obj& x) { 
      // ID needs to be public in order for this to compile 
      return x.ID == id_to_remove; 
     } 
    ) 
, vec.end() 
);