c++ - How to erase elements from a vector based on a specific condition in c++11 -
i have vector of objects , want erase objects, without re-sorting.
i found solutions here, these based on comparing vector element value. [how erase value efficiently sorted vector?
however, need erase based on conditional statement, don't think can use functions way are.
in example, have vector of 3d vectors need remove elements have z value less 0;
what have right vector created original one:
for (int = 0; < original_vectors.size(); i++) if (original_vectors[i].z > 0) new_vectors.push_back(original_vectors[i]); what can drop elements don't have z > 0?
you want erase-remove idiom, standard way remove elements stl container support condition. code snippet remove vector elements predicate returns true:
vector.erase(std::remove_if(vector.begin(), vector.end(), predicate), vector.end()); a predicate checks if z < 0 is:
auto predicate = [](const vec3 &v) { return v.z < 0; }
Comments
Post a Comment