fork download
  1. #include <iostream>
  2. #include <iterator>
  3. #include <algorithm>
  4.  
  5. int main()
  6. {
  7. const auto is_odd = []( int i ) { return i%2 == 1 ; };
  8.  
  9. {
  10. int a[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } ;
  11. for( int v : a ) std::cout << v << ' ' ;
  12. std::cout << '\n' ;
  13.  
  14. auto mid = std::partition( std::begin(a), std::end(a), is_odd ) ;
  15. for( auto iter = std::begin(a) ; iter != mid ; ++iter )
  16. std::cout << *iter << ' ' ;
  17. std::cout << " <partition> " ;
  18. for( auto iter = mid ; iter != std::end(a) ; ++iter )
  19. std::cout << *iter << ' ' ;
  20. std::cout << "\n\n" ;
  21.  
  22. // 0 1 2 3 4 5 6 7 8 9
  23. // 9 1 7 3 5 <partition> 4 6 2 8 0
  24. }
  25.  
  26. {
  27. int a[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } ;
  28. for( int v : a ) std::cout << v << ' ' ;
  29. std::cout << '\n' ;
  30.  
  31. auto mid = std::stable_partition( std::begin(a), std::end(a), is_odd ) ;
  32. for( auto iter = std::begin(a) ; iter != mid ; ++iter )
  33. std::cout << *iter << ' ' ;
  34. std::cout << " <stable_partition> " ;
  35. for( auto iter = mid ; iter != std::end(a) ; ++iter )
  36. std::cout << *iter << ' ' ;
  37. std::cout << "\n\n" ;
  38.  
  39. // 0 1 2 3 4 5 6 7 8 9
  40. // 1 3 5 7 9 <stable_partition> 0 2 4 6 8
  41. }
  42.  
  43. {
  44. int a[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } ;
  45. for( int v : a ) std::cout << v << ' ' ;
  46. std::cout << '\n' ;
  47.  
  48. auto mid = std::remove_if( std::begin(a), std::end(a), is_odd ) ;
  49. for( auto iter = std::begin(a) ; iter != mid ; ++iter )
  50. std::cout << *iter << ' ' ;
  51. std::cout << " <remove_if> " ;
  52. for( auto iter = mid ; iter != std::end(a) ; ++iter )
  53. std::cout << *iter << ' ' ;
  54. std::cout << "\n\n" ;
  55.  
  56. // 0 1 2 3 4 5 6 7 8 9
  57. // 0 2 4 6 8 <remove_if> 5 6 7 8 9
  58. }
  59. }
  60.  
Success #stdin #stdout 0s 3432KB
stdin
Standard input is empty
stdout
0 1 2 3 4 5 6 7 8 9 
9 1 7 3 5  <partition> 4 6 2 8 0 

0 1 2 3 4 5 6 7 8 9 
1 3 5 7 9  <stable_partition> 0 2 4 6 8 

0 1 2 3 4 5 6 7 8 9 
0 2 4 6 8  <remove_if> 5 6 7 8 9