C++ Tutorial/set multiset/set insert

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

set.insert returns pair: p.first represents location and p.second represents the successfulness

#include <iostream>
using std::cout;
using std::endl;
#include <set>
#include <algorithm>
#include <iterator> // ostream_iterator
int main()
{
   double a[ 5 ] = { 2.1, 4.2, 9.5, 2.1, 3.7 };
   std::set< double, std::less< double > > doubleSet( a, a + 5 );;
   std::ostream_iterator< double > output( cout, " " );
   // p represents pair containing const_iterator and bool
   std::pair< std::set< double, std::less< double > >::const_iterator, bool > p;
   p = doubleSet.insert( 13.8 ); // value not in set
   cout << *( p.first ) << ( p.second ? " was" : " was not" ) << " inserted";
   cout << "\ndoubleSet contains: ";
   std::copy( doubleSet.begin(), doubleSet.end(), output );

   cout << endl;
   return 0;
}
13.8 was inserted
doubleSet contains: 2.1 3.7 4.2 9.5 13.8

Use insert() to add element to a set

#include <iostream>
#include <set>
#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);
}