The STL algorithms can only modify the elements in a specified range; the elements are never added or removed from the container.
For example, std::remove() or std::unique() does not actually remove elements from a container. Rather, it rearranges the elements so that the removed elements are placed at the back. It then returns an iterator to the first element of the removed elements.
Code example | Resulting vector |
// Example with std::removeauto vec = std::vector<int>{1,1,2,2,3,3};auto new_end = std::remove( vec.begin(), vec.end(), 2);vec.erase(new_end, vec.end()); |
|
// Example ... |