BVB Source Codes

mars Show algorithm.hpp Source code

Return Download mars: download algorithm.hpp Source code - Download mars Source code - Type:.hpp
  1. //////////////////////////////////////////////////////////////////////////////
  2. //
  3. // (C) Copyright Ion Gaztanaga 2014-2014.
  4. //
  5. // Distributed under the Boost Software License, Version 1.0.
  6. // (See accompanying file LICENSE_1_0.txt or copy at
  7. // http://www.boost.org/LICENSE_1_0.txt)
  8. //
  9. // See http://www.boost.org/libs/intrusive for documentation.
  10. //
  11. //////////////////////////////////////////////////////////////////////////////
  12.  
  13. #ifndef BOOST_INTRUSIVE_DETAIL_ALGORITHM_HPP
  14. #define BOOST_INTRUSIVE_DETAIL_ALGORITHM_HPP
  15.  
  16. #ifndef BOOST_CONFIG_HPP
  17. #  include <boost/config.hpp>
  18. #endif
  19.  
  20. #if defined(BOOST_HAS_PRAGMA_ONCE)
  21. #  pragma once
  22. #endif
  23.  
  24. namespace mars_boost {} namespace boost = mars_boost; namespace mars_boost {
  25. namespace intrusive {
  26.  
  27. struct algo_pred_equal
  28. {
  29.    template<class T>
  30.    bool operator()(const T &x, const T &y) const
  31.    {  return x == y;  }
  32. };
  33.  
  34. struct algo_pred_less
  35. {
  36.    template<class T>
  37.    bool operator()(const T &x, const T &y) const
  38.    {  return x < y;  }
  39. };
  40.  
  41. template<class InputIt1, class InputIt2, class BinaryPredicate>
  42. bool algo_equal(InputIt1 first1, InputIt1 last1, InputIt2 first2, BinaryPredicate p)
  43. {
  44.     for (; first1 != last1; ++first1, ++first2) {
  45.         if (!p(*first1, *first2)) {
  46.             return false;
  47.         }
  48.     }
  49.     return true;
  50. }
  51.  
  52. template<class InputIt1, class InputIt2>
  53. bool algo_equal(InputIt1 first1, InputIt1 last1, InputIt2 first2)
  54. {  return (algo_equal)(first1, last1, first2, algo_pred_equal());  }
  55.  
  56. template<class InputIt1, class InputIt2, class BinaryPredicate>
  57. bool algo_equal(InputIt1 first1, InputIt1 last1, InputIt2 first2, InputIt2 last2, BinaryPredicate pred)
  58. {
  59.     for (; first1 != last1 && first2 != last2; ++first1, ++first2)
  60.         if (!pred(*first1, *first2))
  61.             return false;
  62.     return first1 == last1 && first2 == last2;
  63. }
  64.  
  65. template<class InputIt1, class InputIt2>
  66. bool algo_equal(InputIt1 first1, InputIt1 last1, InputIt2 first2, InputIt2 last2)
  67. {  return (algo_equal)(first1, last1, first2, last2, algo_pred_equal());  }
  68.  
  69. template <class InputIterator1, class InputIterator2, class BinaryPredicate>
  70.   bool algo_lexicographical_compare (InputIterator1 first1, InputIterator1 last1,
  71.                                      InputIterator2 first2, InputIterator2 last2,
  72.                                      BinaryPredicate pred)
  73. {
  74.    while (first1 != last1){
  75.       if (first2 == last2 || *first2 < *first1) return false;
  76.       else if (pred(*first1, *first2)) return true;
  77.       ++first1; ++first2;
  78.    }
  79.    return (first2 != last2);
  80. }
  81.  
  82. template <class InputIterator1, class InputIterator2>
  83.   bool algo_lexicographical_compare (InputIterator1 first1, InputIterator1 last1,
  84.                                      InputIterator2 first2, InputIterator2 last2)
  85. {  return (algo_lexicographical_compare)(first1, last1, first2, last2, algo_pred_less());  }
  86.  
  87. }  //namespace intrusive {
  88. }  //namespace mars_boost {} namespace boost = mars_boost; namespace mars_boost {
  89.  
  90. #endif   //#ifndef BOOST_INTRUSIVE_DETAIL_ALGORITHM_HPP
  91.  
downloadalgorithm.hpp Source code - Download mars Source code
Related Source Codes/Software:
Hero - Elegant transition library for iOS & tvOS 2017-06-09
deep-photo-styletransfer - Code and data for paper "Deep Photo Style Transfer... 2017-06-09
mastodon - A GNU Social-compatible microblogging server ... 2017-06-09
plyr - A simple HTML5, YouTube and Vimeo player ... 2017-06-08
prepack - Prepack is a partial evaluator for JavaScript. Pre... 2017-06-08
Public-APIs - 2017-06-09
lottie-ios - An iOS library to natively render After Effects ve... 2017-06-09
Awesome-Hacking - A collection of various awesome lists for hackers,... 2017-06-09
algorithms - Minimal examples of data structures and algorithms... 2017-06-10
lectures - Oxford Deep NLP 2017 course 2017-06-10
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top