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)
62 template<
typename T,
typename FN>
63 int indexOf(
const T& container, FN fn)
65 auto it = Algorithm::find(container, fn);
66 if(it == container.end())
70 return std::distance(container.begin(), it);
73 template<
class Container,
typename FN>
74 int count(
const Container& container, FN fn)
76 return std::count_if(container.begin(), container.end(), fn);
79 template<
class Container>
80 void remove_duplicates(Container& container)
82 for(
auto it = container.begin(); it != container.end(); it++)
86 std::remove(it + 1, container.end(), *it),
92 template<
class Container,
class Function>
93 void removeIf(Container& container, Function fn)
95 auto it = std::remove_if(container.begin(), container.end(), fn);
96 container.erase(it, container.end());
99 template<
class ContainerIn,
class ContainerOut,
typename FN>
100 void transform(
const ContainerIn& in, ContainerOut& out, FN fn)
102 std::transform(in.begin(), in.end(), std::back_inserter(out), fn);
105 template<
class ContainerInOut,
typename FN>
106 void transform(ContainerInOut& inout, FN fn)
108 std::transform(inout.cbegin(), inout.cend(), inout.begin(), fn);
111 template<
class ContainerIn,
class ContainerOut,
typename FN>
112 void copyIf(
const ContainerIn& in, ContainerOut& out, FN fn)
114 std::copy_if(in.begin(), in.end(), std::back_inserter(out), fn);
117 template<
class ContainerIn,
class ContainerOut,
typename FN>
118 void moveIf(ContainerIn& in, ContainerOut& out, FN fn)
120 for(
auto& element: in)
124 out.emplace_back(std::move(element));
Helper functions.
Definition: MetaTypeRegistry.h:25