CHAPTER5-19.cpp
上传用户:fjc899
上传日期:2007-07-03
资源大小:187k
文件大小:3k
源码类别:

STL

开发平台:

C/C++

  1. //文件名:CHAPTER5-19.cpp
  2. #pragma warning(disable: 4786)
  3. #include <set>
  4. #include <iostream>
  5. int main()
  6. {
  7. //default constructor
  8. std::multiset<int> c1 ;
  9. int ai[] = {0, 0, 1, 1, 2, 2, 3, 4} ;
  10. //construct from a range
  11. std::multiset<int> c2(ai, ai + 8) ;
  12. //copy constructor
  13. std::multiset<int> c3(c2) ;
  14. std::multiset<int>::iterator Iter ;
  15. std::multiset<int>::reverse_iterator RevIter ;
  16. //empty
  17. if(c1.empty()){std::cout << "multiset c1 is empty" << std::endl ; }
  18. else{ std::cout << "multiset c1 is not empty" << std::endl ; }
  19. //begin, end
  20. std::cout << "c2 (using begin, end)  = " ;
  21. for(Iter = c2.begin(); Iter != c2.end(); Iter++){ std::cout << *Iter << " " ;}
  22. std::cout << std::endl ;
  23. //rbegin, rend
  24. std::cout << "c2 (using rbegin, rend) = " ;
  25. for(RevIter = c2.rbegin(); RevIter != c2.rend(); RevIter++) {std::cout << *RevIter << " " ;}
  26. std::cout << std::endl ;
  27. //insert
  28. c1.insert(ai, ai+4) ;
  29. c1.insert(1) ;
  30. //count
  31. std::cout << "Number elements in c1 that match 1 = " << c1.count(1) << std::endl ;
  32. //find
  33. std::multiset<int>::const_iterator constIter = c1.find(3) ;
  34. if(constIter != c1.end()){std::cout << "c1 contains element 3, *constIter = " << *constIter << std::endl ;}
  35. //max_size
  36. std::cout << "c1.max_size() = " << c1.max_size() << std::endl ;
  37. //size
  38. std::cout << "c1.size() = " << c1.size() << std::endl ;
  39. //swap
  40. c1.insert(4) ;
  41. c2.swap(c1) ;
  42. std::cout << "The last element of c2 = " << *(c2.rbegin())<< std::endl ;
  43. //clear
  44. c1.clear() ;
  45. std::cout << "After calling c1.clear(), c1.size() = "<< c1.size() << std::endl ;
  46. //get_allocator
  47. std::multiset<int>::allocator_type a1 = c1.get_allocator() ;
  48. //key_compare
  49. std::multiset<int>::key_compare kc = c2.key_comp() ;
  50. bool result = kc(2, 3) ;
  51. if(result == true){std::cout << "kc is function object used by c2.  kc(2,3) = true" << std::endl ;}
  52. else{ std::cout << "kc is function object used by c2.  kc(2,3) = false" << std::endl ;}
  53. //value_comp
  54. std::multiset<int>::value_compare vc = c2.value_comp() ;
  55. result = vc(10, 4) ;
  56. if(result == true){std::cout << "vc is function object used by c2.  vc(10,4) = true" << std::endl ;}
  57. else{std::cout << "vc is function object used by c2.  vc(10,4) = false" << std::endl ;}
  58. //upper_bound
  59. std::cout << "* (c2.upper_bound(3)) = "<< *(c2.upper_bound(3)) << std::endl ;
  60. //lower_bound
  61. std::cout << "* (c2.lower_bound(3)) = "<< *(c2.lower_bound(3)) << std::endl ;
  62. //equal_range
  63. std::pair<std::multiset<int>::const_iterator, std::multiset<int>::const_iterator> pr1 = c2.equal_range(3) ;
  64. std::cout << "*(pr1.first) = " << *(pr1.first) << "t"<< "*(pr1.second) = " << *(pr1.second) << std::endl ;
  65. //erase
  66. if(c3.erase(1) != 0){std::cout << "c3 does not contain 1 any more" << std::endl ;}
  67. else{ std::cout << "No elements in c3 match key 1" << std::endl ;}
  68. if((c2.erase(c2.begin())) != c2.end()){std::cout << "c2 does not contain 0 any more" << std::endl ;}
  69. else{ std::cout << "No elements in c2 match key 0" << std::endl ;}
  70. c3.erase(c3.begin(), c3.end()) ;
  71. std::cout << "after c3.erase(c3.begin(), c3.end()), c3.size() = "<< c3.size() << std::endl ;
  72. return 0 ;
  73. }