OpenLexocad  27.1
Algorithms.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <algorithm>
4 
5 namespace Base
6 {
7 
8 template <class InputIt, class OutputIt, class Pred, class Fct>
9 void transform_if(InputIt first, InputIt last, OutputIt dest, Pred pred, Fct transform)
10 {
11  while (first != last)
12  {
13  if (pred(*first))
14  *dest++ = transform(*first);
15  else
16  *dest++ = *first;
17 
18  ++first;
19  }
20 }
21 
22 template <class Cont, class OutputIt, class Pred, class Fct>
23 void transform_if(Cont container, OutputIt dest, Pred pred, Fct transform)
24 {
25  transform_if(container.cbegin(), container.cend(), dest, pred, transform);
26 }
27 
28 template <typename Container, typename OutputIt, typename BinaryFunction>
29 void transform(Container container, OutputIt out, BinaryFunction function)
30 {
31  std::transform(container.cbegin(), container.cend(), out, function);
32 }
33 
34 template <typename Container, typename T, typename BinaryFunction>
35 T accumulate(Container container, T init, BinaryFunction function)
36 {
37  return std::accumulate(container.cbegin(), container.cend(), init, function);
38 }
39 
40 
41 
42 }
T accumulate(Container container, T init, BinaryFunction function)
Definition: Algorithms.h:35
void transform(Container container, OutputIt out, BinaryFunction function)
Definition: Algorithms.h:29
void transform_if(InputIt first, InputIt last, OutputIt dest, Pred pred, Fct transform)
Definition: Algorithms.h:9
Definition: AbstractXMLReader.h:5