C++ flat_set::erase() Function



The std::flat_set::erase() function in C++, is used to remove the elements from a flat_set. This function ensures that the elements remain the sorted after removal, maintaining the container's unique, ordered structure.

This function provides multiple overloads; one for erasing elements by iterator, another for erasing elements by key and a range-based version. When an iterator is provided, it removes the specific element at that position. If a key is given, all matching elements are removed.

Syntax

Following is the syntax for std::flat_set::erase() function.

iterator erase( iterator position );
or
iterator erase( const_iterator pos );
or
iterator erase( const_iterator first, const_iterator last );

Parameters

  • pos − It indicates the iterator to the element to remove.
  • first, last − It indicates the pair of iterators defining the range of elements to remove.

Return Value

This function returns the iterator following the last removed element.

Example 1

Let's look at the following example, where we are going to remove the specific elements from a flat_set.

#include <iostream>
#include <boost/container/flat_set.hpp>
int main() {
   boost::container::flat_set < int > a = {12,23,34,45};
   size_t x = a.erase(23);
   std::cout << "Elements after erasing: ";
   for (int y: a) {
      std::cout << y << " ";
   }
   std::cout << "\nNumber of elements removed: " << x << std::endl;
   return 0;
}

Output

Output of the above code is as follows −

Elements after erasing: 12 34 45 
Number of elements removed: 1

Example 2

Consider the following example, where we are going to erase an element using an iterator.

#include <iostream>
#include <boost/container/flat_set.hpp>
int main() {
   boost::container::flat_set < int > a = {2,4,6,8};
   auto x = a.begin();
   ++x;
   a.erase(x);
   std::cout << "Elements after erasing : ";
   for (int y: a) {
      std::cout << y << " ";
   }
   std::cout << std::endl;
   return 0;
}

Output

Following is the output of the above code −

Elements after erasing : 2 6 8 
cpp_flat_set.htm