32 template<
typename T,
typename FN>
33 bool contains(
const T& container, FN fn)
35 return std::any_of(container.begin(), container.end(), fn);
38 template<
typename T,
typename FN>
39 void sort(T& container, FN fn)
41 std::sort(container.begin(), container.end(), fn);
44 template<
typename T,
typename FN>
45 typename T::iterator find(T& container, FN fn)
47 return std::find_if(container.begin(), container.end(), fn);
50 template<
typename T,
typename FN>
51 typename T::const_iterator find(
const T& container, FN fn)
53 return std::find_if(container.begin(), container.end(), fn);
57 constexpr typename std::add_const<T>::type& AsConst(T& t) {
61 template<
typename T,
typename FN>
62 int indexOf(
const T& container, FN fn) {
63 auto it = Algorithm::find(container, fn);
64 if(it == container.end())
68 return std::distance(container.begin(), it);
71 template<
class Container,
typename FN>
72 int count(
const Container& container, FN fn)
74 return std::count_if(container.begin(), container.end(), fn);
77 template<
class Container>
78 void remove_duplicates(Container& container)
80 for(
auto it=container.begin(); it != container.end(); it++)
84 std::remove(it + 1, container.end(), *it),
90 template<
class Container,
class Function>
91 void removeIf(Container& container, Function fn)
93 auto it = std::remove_if(container.begin(), container.end(), fn);
94 container.erase(it, container.end());
97 template<
class ContainerIn,
class ContainerOut,
typename FN>
98 void transform(
const ContainerIn& in, ContainerOut& out, FN fn)
100 std::transform(in.begin(), in.end(), std::back_inserter(out), fn);
103 template<
class ContainerInOut,
typename FN>
104 void transform(ContainerInOut& inout, FN fn)
106 std::transform(inout.cbegin(), inout.cend(), inout.begin(), fn);
109 template<
class ContainerIn,
class ContainerOut,
typename FN>
110 void copyIf(
const ContainerIn& in, ContainerOut& out, FN fn)
112 std::copy_if(in.begin(), in.end(), std::back_inserter(out), fn);
115 template<
class ContainerIn,
class ContainerOut,
typename FN>
116 void moveIf(ContainerIn& in, ContainerOut& out, FN fn)
118 for(
auto& element : in)
122 out.emplace_back(std::move(element));
Helper functions.
Definition: Utils.h:38