Why erasing vector.end() is allowed?
问题 Today I was doing a bit of code, which looked something like this: vec.erase(std::remove_if(vec.begin(), vec.end(), <lambda here>)); When above code was not supposed to erase anything, meaning that std::remove_if should return vec.end(), I was very surprised when i received my vector with size decreased by one: last element was erased. Problem was fixed by changing above to: vec.erase(std::remove_if(vec.begin(), vec.end(), <lambda here>), vec.end()); But still question remains: how can vec