13namespace tracktion {
inline namespace core
16template<
class Container,
class T,
class BinaryOperation>
17inline T
accumulate (
const Container& container, T init)
22template<
class Container,
class T,
class BinaryOperation>
23inline T
accumulate (
const Container& container, T init, BinaryOperation op)
28template<
class Container,
class UnaryFunction>
29UnaryFunction
for_each (
const Container& container, UnaryFunction f)
34template<
class Container,
class UnaryFunction>
35bool contains (
const Container& container, UnaryFunction f)
42template<
class Container>
43bool contains_v (
const Container& container,
typename Container::value_type v)
49template<
class Container>
50inline void sort (Container& container)
55template<
class Container,
class Compare>
56inline void sort (Container& container, Compare comp)
61template<
class Container>
67template<
class Container,
class Compare>
68inline void stable_sort (Container& container, Compare comp)
73template<
class Container>
76 if (
auto iter =
std::find (container.begin(), container.end(), v);
77 iter != container.end())
83template<
class Container,
class Predicate>
87 iter != container.end())
93template<
class Container,
class IndexType>
96 const auto i =
static_cast<typename Container::size_type
> (index);
98 if (i >= 0 && i < container.size())
104template<
class Container,
class IndexType>
105inline typename Container::value_type get_or (
const Container& container, IndexType index,
const typename Container::value_type& defaultValue)
107 const auto i =
static_cast<typename Container::size_type
> (index);
109 if (i >= 0 && i < container.size())
125template<
class SmartPo
interContainer>
126SmartPointerContainer& erase_if_null (SmartPointerContainer& container)
128 container.erase (
std::remove_if (container.begin(), container.end(),
129 [] (
auto& c) { return ! c; }),
137template<
class Container>
142 auto new_end =
std::remove_if (container.begin(), container.end(),
143 [&seen] (
const auto& value)
145 if (seen.find (value) != seen.end())
151 container.erase (new_end, container.end());
bool contains_v(const Container &container, typename Container::value_type v)
Returns true if a specific value is found in a container.
Container & stable_remove_duplicates(Container &container)
Removes duplicates from a container maintaining the order.