2016-08-18 60 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() 
);