CASM
AClustersApproachtoStatisticalMechanics
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules
algorithm.hh
Go to the documentation of this file.
1 #ifndef CASM_algorithm
2 #define CASM_algorithm
3 
4 #include <algorithm>
5 
6 namespace CASM {
7 
9  template<typename Iterator, typename T, typename BinaryCompare>
10  Iterator find(Iterator begin, Iterator end, const T &value, BinaryCompare q) {
11  return std::find_if(begin, end, [&value, q](const T & other)->bool {return q(value, other);});
12  }
13 
15  template<typename Iterator, typename T>
16  Index find_index(Iterator begin, Iterator end, const T &value) {
17  return std::distance(begin, std::find(begin, end, value));
18  }
19 
21  template<typename Iterator, typename T, typename BinaryCompare>
22  Index find_index(Iterator begin, Iterator end, const T &value, BinaryCompare q) {
23  return std::distance(begin, find(begin, end, value, q));
24  }
25 
27  template<typename Iterator, typename UnaryPredicate>
28  Index find_index_if(Iterator begin, Iterator end, UnaryPredicate p) {
29  return std::distance(begin, std::find_if(begin, end, p));
30  }
31 
33  template<typename Iterator, typename UnaryPredicate>
34  Index find_index_if_not(Iterator begin, Iterator end, UnaryPredicate q) {
35  return std::distance(begin, std::find_if_not(begin, end, q));
36  }
37 
38 
40  template<typename Container, typename T, typename BinaryCompare>
41  Index find_index(const Container &container, const T &value, BinaryCompare q) {
42  return std::distance(container.begin(), find(container.begin(), container.end(), value, q));
43  }
44 
46  template<typename Container, typename T>
47  Index find_index(const Container &container, const T &value) {
48  return std::distance(container.begin(), std::find(container.begin(), container.end(), value));
49  }
50 
52  template<typename Container, typename UnaryPredicate>
53  Index find_index_if(const Container &container, UnaryPredicate p) {
54  return std::distance(container.begin(), std::find_if(container.begin(), container.end(), p));
55  }
56 
58  template<typename Container, typename UnaryPredicate>
59  Index find_index_if_not(const Container &container, UnaryPredicate q) {
60  return std::distance(container.begin(), std::find_if_not(container.begin(), container.end(), q));
61  }
62 
63 
65  template<typename Container, typename T>
66  bool contains(const Container &container, const T &value) {
67  return container.end() != std::find(container.begin(), container.end(), value);
68  }
69 
71  template<typename Container, typename T, typename BinaryCompare>
72  bool contains(const Container &container, const T &value, BinaryCompare q) {
73  return container.end() != find(container.begin(), container.end(), value, q);
74  }
75 
77  template<typename Container, typename UnaryPredicate>
78  bool contains_if(const Container &container, UnaryPredicate p) {
79  return container.end() != std::find_if(container.begin(), container.end(), p);
80  }
81 
83  template<typename Container, typename UnaryPredicate>
84  bool contains_if_not(const Container &container, UnaryPredicate q) {
85  return container.end() != std::find_if_not(container.begin(), container.end(), q);
86  }
87 
88 }
89 
90 #endif
bool contains_if(const Container &container, UnaryPredicate p)
Equivalent to container.end() != std::find_if(container.begin(), container.end(), p) ...
Definition: algorithm.hh:78
Index find_index(Iterator begin, Iterator end, const T &value)
Equivalent to std::distance(begin, std::find(begin, end, value))
Definition: algorithm.hh:16
Main CASM namespace.
Definition: complete.cpp:8
bool contains_if_not(const Container &container, UnaryPredicate q)
Equivalent to container.end() != std::find_if_not(container.begin(), container.end(), q)
Definition: algorithm.hh:84
Index find_index_if(Iterator begin, Iterator end, UnaryPredicate p)
Equivalent to std::distance(begin, std::find_if(begin, end, p))
Definition: algorithm.hh:28
EigenIndex Index
For long integer indexing:
Index find_index_if_not(Iterator begin, Iterator end, UnaryPredicate q)
Equivalent to std::distance(begin, std::find_if_not(begin, end, q))
Definition: algorithm.hh:34
Iterator find(Iterator begin, Iterator end, const T &value, BinaryCompare q)
Equivalent to std::find(begin, end, value), but with custom comparison.
Definition: algorithm.hh:10
bool contains(const Container &container, const T &value)
Equivalent to container.end() != std::find(container.begin(), container.end(), value) ...
Definition: algorithm.hh:66