Limitations of Erase Remove Idiom
- It only works with certain types of containers like vectors, lists, and deques, and not with others like maps and sets.
- Disrupts the order of remaining elements.
- It may be slow if the predicate function is expensive.
Erase-Remove Idiom in C++
Erase-Remove-Idiom is a C++ STL (Standard Template Library) technique to remove elements from a container. It is used to remove all the elements satisfying certain conditions from the container.
The erase-remove idiom is especially useful in array-based containers like vectors, where each elimination requires all the remaining elements to adjust. In the worst case, this may lead to O ( n2 ) time complexity. This technique avoids this by providing the elimination of the elements in a single parse. That is why, the erase-remove idiom provides O( n ) time complexity.
In this technique, we use the combination of two member functions of the container to remove the elements efficiently.
- std::erase
- std::remove or std::remove_if
It is due to the use of this function that this technique is called the erase-remove idiom.