cgintset.cpp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #include "cgstd.h"
  2. #include "cgintset.h"
  3. using namespace std;
  4. int CGIntSet::insert( int n ){
  5. int sz=size();
  6. set<int>::insert(n);
  7. return size()-sz;
  8. }
  9. int CGIntSet::insert( const CGIntSet &t ){
  10. int sz=size();
  11. const_iterator it;
  12. for( it=t.begin();it!=t.end();++it ){
  13. set<int>::insert( *it );
  14. }
  15. return size()-sz;
  16. }
  17. int CGIntSet::xinsert( const CGIntSet &t,const CGIntSet &p ){ //insert elements in t NOT in p
  18. int sz=size();
  19. const_iterator it;
  20. for( it=t.begin();it!=t.end();++it ){
  21. int n=*it;
  22. if( !p.count(n) ) set<int>::insert(n);
  23. }
  24. return size()-sz;
  25. }
  26. int CGIntSet::erase( int n ){
  27. return set<int>::erase(n);
  28. }
  29. int CGIntSet::erase( const CGIntSet &t ){
  30. int sz=size();
  31. const_iterator it;
  32. for( it=t.begin();it!=t.end();++it ){
  33. set<int>::erase( *it );
  34. }
  35. return sz-size();
  36. }
  37. int CGIntSet::xerase( const CGIntSet &t,const CGIntSet &p ){ //erase elements in t NOT in p
  38. int sz=size();
  39. const_iterator it;
  40. for( it=t.begin();it!=t.end();++it ){
  41. int n=*it;
  42. if( !p.count(n) ) set<int>::erase(n);
  43. }
  44. return sz-size();
  45. }
  46. CGIntSet::iterator CGIntSet::erase( iterator it ){
  47. iterator t=it++;
  48. set<int>::erase(t);
  49. return it;
  50. }