오브젝트의 벡터가 있습니다. 내 데이터 구조는 다음과 같은 : 내가 마지막 요소보다 작거나 같은 요소를 삭제하려는 벡터 VEC에서 지금std :: remove_if에서 술어 함수 사용
vec
((10.0,2),(100,3),(19.0,3)...)
:
class my_class{
float a; int b;
};
my_class obj;
vector<my_class> vec;
벡터 VEC는 형태의 데이터를 포함 VEC의 ...이를 위해 전 기능을 지우고 remove_if 사용하고 있습니다 :
vec.erase(std::remove_if(vec.begin(), vec.end(), predicate_function(vec, (vec.end()-1).a, (vec.end()-1).b)), vec.end());
나는 "VEC"의 반복을 수행 가지고있는 predicate_function을. 그러나 이것은 std :: remove_if를 사용하는 목적을 무효화합니다. 누군가가 remove_if를 작동시키기 위해 predicate_function이 어떻게 보이는지에 관해서 도움을받을 수 있습니까? lambda_function을 사용하고 싶지 않습니다. 또한 제 컴파일러는 GCC입니다
방법 것 술어 객체가 단지 하나의 반복자의 매개 변수를 전달되기 때문에 나는 벡터의 마지막 객체와 비교를 수행한다. 추신 : 회신 해 주셔서 감사합니다 –
@ JannatArora functor로이를 수행하는 방법은 제 편집을 참조하십시오. – Yuushi
'remove_if()'가 제거해야 할 것을 제거한다고 생각하지 않습니까? 왜 당신은'vec.erase()'를 유지 했습니까? 뿐만 아니라 vecend()는'erase()'의 마지막 매개 변수로 호출 할 때부터'remove_if()'가 반환 할 때까지 변경 될 수 있습니다. –