2016-08-18 9 views
1

は、私たちは オブジェクトのベクトルから要素を消去する方法は?

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()); 

int型

のベクターから要素を削除することができます方法を知っているどのような場合にそのobjが、私は特定のIDに保持されているベクトルを削除する方法を

class obj { 

int ID; 
string name; 

} 

ですvector<obj> vec

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() 
); 
関連する問題