1#ifndef MSL_ALGORITHM_H_
2#define MSL_ALGORITHM_H_
10template <
class ForwardIterator,
class T,
typename Predicate>
11inline ForwardIterator
lower_bound(ForwardIterator first, ForwardIterator last,
const T& val, Predicate
p) {
16 ForwardIterator
i = first;
17 difference_type step = len / 2;
31template <
class ForwardIterator,
class T>
32ForwardIterator
lower_bound(ForwardIterator first, ForwardIterator last,
const T& val) {
42 ForwardIterator
i = first;
43 difference_type step = len / 2;
58template <
class ForwardIterator,
class T,
class Predicate>
59ForwardIterator
upper_bound(ForwardIterator first, ForwardIterator last,
const T& val, Predicate
p) {
64 ForwardIterator
i = first;
65 difference_type step = len / 2;
80template<
class InputIt,
class UnaryPredicate>
81InputIt
find_if(InputIt first, InputIt last, UnaryPredicate
p) {
82 while (first != last && !
p(*first)) {
89template<
class ForwardIterator,
class T>
90inline ForwardIterator
find(ForwardIterator first, ForwardIterator last, T& val) {
91 while (first != last && !(*first == val)) {
123template<
class ForwardIt,
class T>
124inline void fill(ForwardIt first, ForwardIt last,
const T& value) {
125 for (; first != last; ++first){
130template<
class InputIt,
class OutputIt>
131inline OutputIt
copy(InputIt first, InputIt last,
133 for (; first < last; ++first, ++d_first) {
139template <
class B
idirectionalIterator1,
class B
idirectionalIterator2>
140inline BidirectionalIterator2
copy_backward(BidirectionalIterator1 first, BidirectionalIterator1 last, BidirectionalIterator2 result) {
141 while (last != first)
146template <
class T,
bool A>
163 size_t n =
static_cast<size_t>(last - first);
165 memmove(result, first,
n*
sizeof(T));
int i
Definition e_pow.c:165
Definition JMATrigonometric.cpp:12
iterator_traits< InputIterator >::difference_type distance(InputIterator first, InputIterator last)
Definition iterator.h:96
OutputIt copy(InputIt first, InputIt last, OutputIt d_first)
Definition algorithm.h:131
InputIt find_if(InputIt first, InputIt last, UnaryPredicate p)
Definition algorithm.h:81
void advance(InputIterator &i, Distance n)
Definition iterator.h:67
BidirectionalIterator2 copy_backward(BidirectionalIterator1 first, BidirectionalIterator1 last, BidirectionalIterator2 result)
Definition algorithm.h:140
ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last, const T &val, Predicate p)
Definition algorithm.h:11
ForwardIterator find(ForwardIterator first, ForwardIterator last, T &val)
Definition algorithm.h:90
void fill(ForwardIt first, ForwardIt last, const T &value)
Definition algorithm.h:124
ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last, const T &val, Predicate p)
Definition algorithm.h:59
void * memmove(void *dst, const void *src, size_t n)
Definition mem.c:3
static T * copy_backward(T *first, T *last, T *result)
Definition algorithm.h:160
Definition algorithm.h:148
static T * copy_backward(T *first, T *last, T *result)
Definition algorithm.h:149
Definition functional.h:9
Iterator::difference_type difference_type
Definition iterator.h:15