C++ Tutorial/set multiset/set erase

Материал из C\C++ эксперт
Перейти к: навигация, поиск

erase() method returns size type of a set

<source lang="cpp">#include <iostream>

  1. include <set>
  2. include <vector>

using namespace std; template <class T> void print(T& c){

  for( typename T::iterator i = c.begin(); i != c.end(); i++ ){
     std::cout << *i << endl;
  }

} int main(){

  const int num_grades = 11;
  const int grade[num_grades] = { 2, 5, 3, 8, 9, 9, 6, 3, 5, 9, 10 };
  set<int> unique( grade, grade+num_grades );
  multiset<int> all( grade, grade+num_grades );
  print( unique );
  print( all );
  const int wrong_grade = 9;
  const int right_grade = 10;
  if( unique.erase( wrong_grade ) == 1 ){
     if( unique.insert( right_grade ).second )
        cout << "Added new, unique grade of " << right_grade << endl;
     else
        cout << "Already have unique grade of " << right_grade << endl;
  }
  else
     cout << "No unique grade of " << wrong_grade << endl;
  print( unique);
  print( all);

}</source>

Use erase() method to delete one element in a set

<source lang="cpp">#include <iostream>

  1. include <set>
  2. include <vector>

using namespace std; template <class T> void print(T& c){

  for( typename T::iterator i = c.begin(); i != c.end(); i++ ){
     std::cout << *i << endl;
  }

} int main(){

  const int num_grades = 11;
  const int grade[num_grades] = { 2, 5, 3, 8, 9, 9, 6, 3, 5, 9, 10 };
  set<int> unique( grade, grade+num_grades );
  multiset<int> all( grade, grade+num_grades );
  print( unique );
  print( all );
  const int wrong_grade = 9;
  const int right_grade = 10;
  if( unique.erase( wrong_grade ) == 1 ){
     if( unique.insert( right_grade ).second )
        cout << "Added new, unique grade of " << right_grade << endl;
     else
        cout << "Already have unique grade of " << right_grade << endl;
  }
  else
     cout << "No unique grade of " << wrong_grade << endl;
  print( unique);
  print( all);

}</source>