Advertisement
Guest User

Untitled

a guest
Jan 19th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.20 KB | None | 0 0
  1. #ifndef _MY_ALGORITHMS_HPP__
  2. # define _MY_ALGORITHMS_HPP__
  3.  
  4. #include <algorithm>
  5. #include <iostream>
  6. #include <iomanip>
  7.  
  8. template<typename T>
  9. void vPrint(T const &contener, void (*showFuncPtr)(int))
  10. {
  11. std::cout << "Dump (" << std::setw(2) << contener.size() << ')' << ' ';
  12. std::for_each(contener.begin(), contener.end(), showFuncPtr);
  13. std::cout << std::endl;
  14. }
  15.  
  16. template<typename T>
  17. size_t vHowMany(T const &contener, int value)
  18. {
  19. return std::count(contener.begin(), contener.end(), value);
  20. }
  21.  
  22. template<typename T>
  23. bool vIsSimilar(T const &contener, int *values)
  24. {
  25. return std::equal(contener.begin(), contener.end(), values);
  26. }
  27.  
  28. template<typename T>
  29. void vAssign(T itFrom, T itTo, int value)
  30. {
  31. std::fill(itFrom, itTo, value);
  32. }
  33.  
  34. template<typename T>
  35. void vFindAndModify(T &contener, int oldValue, int newValue)
  36. {
  37. std::replace(contener.begin(), contener.end(), oldValue, newValue);
  38. }
  39.  
  40. template<typename T>
  41. typename T::iterator vFindAndKill(T &contener, int value)
  42. {
  43. return std::remove(contener.begin(), contener.end(), value);
  44. }
  45.  
  46. template<typename T>
  47. void vShift(T &contener, int nbShift)
  48. {
  49. std::move(contener.begin(), contener.begin() + nbShift, contener.end());
  50. }
  51.  
  52. template<typename T, typename U>
  53. void vApply(T itFrom, T itTo, U funcPtr)
  54. {
  55. std::for_each(itFrom, itTo, funcPtr);
  56. }
  57.  
  58. template<typename T>
  59. void vFlip(T &contener)
  60. {
  61. std::reverse(contener.begin(), contener.end());
  62. }
  63.  
  64. template<typename T>
  65. void vToAscOrder(T &contener)
  66. {
  67. std::sort(contener.begin(), contener.end());
  68. }
  69.  
  70. template<typename T>
  71. void vToSpecificOrder(T &contener, bool (*cmpFuncPtr)(int, int))
  72. {
  73. std::sort(contener.begin(), contener.end(), cmpFuncPtr);
  74. }
  75.  
  76. template<typename T>
  77. typename T::iterator vGiveMeTheFirst(T &contener, int value)
  78. {
  79. return std::find(contener.begin(), contener.end(), value);
  80. }
  81.  
  82. template<typename T>
  83. typename T::iterator vRemoveDuplicate(T &contener)
  84. {
  85. return std::unique(contener.begin(), contener.end());
  86. }
  87.  
  88. template<typename T>
  89. void vFusionOrderedLists(T const &contener1, T const &contener2,
  90. T &contenerToFill
  91. )
  92. {
  93. std::merge(contener1.begin(), contener1.end(), contener2.begin(),
  94. contener2.end(), contenerToFill.begin());
  95. }
  96.  
  97. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement