I'm creating an API which users will call to remove items from an internal vector. They will pass in criteria to search the vector for elements to remove. I'd like my API to return a boolean for if any elements were found and removed.
I'm planning on using the erase-remove idiom to keep things simple and efficient. I don't see an obvious way right off to detect that items were actually removed? Is storing the number of elements in the vector before removing, and comparing the value, my best bet?
Here is some (untested) sample code on this idiom:
std::vector<int> v = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
boolean removeMultiples(int multiple) {
v.erase( std::remove_if(v.begin(), v.end(), [multiple](int i){return i%multiple == 0;}), v.end() );
// return true if anything was removed
}