4#ifndef _Stroika_Foundation_Containers_STL_Utilities_h_
5#define _Stroika_Foundation_Containers_STL_Utilities_h_ 1
7#include "Stroika/Foundation/StroikaPreComp.h"
12#include "Stroika/Foundation/Common/Common.h"
22namespace Stroika::Foundation::Containers::STL {
27 template <
typename ITERABLE_OF_T,
typename T =
typename ITERABLE_OF_T::value_type, Common::IPotentiallyComparer<T> EQUALS_COMPARER = equal_to<T>>
28 bool equal (
const ITERABLE_OF_T& lhs,
const ITERABLE_OF_T& rhs, EQUALS_COMPARER&& equalsComparer = {});
42 template <
typename CREATE_CONTAINER_TYPE,
typename FROM_CONTAINER_TYPE>
43 [[deprecated (
"Since Stroika v3.0d5 just use Traversal::Map<> or more directly use STL(ranges)")]] CREATE_CONTAINER_TYPE
44 Make (
const FROM_CONTAINER_TYPE& rhs);
52 template <
typename TARGET_CONTAINER>
53 void Append (TARGET_CONTAINER* v);
54 template <
typename TARGET_CONTAINER,
typename SRC_CONTAINER>
55 void Append (TARGET_CONTAINER* v,
const SRC_CONTAINER& v2);
56 template <
typename TARGET_CONTAINER,
typename SRC_CONTAINER,
typename... Args>
57 void Append (TARGET_CONTAINER* v,
const SRC_CONTAINER& v2, Args... args);
66 template <
typename TARGET_CONTAINER,
typename SRC_CONTAINER,
typename... Args>
67 TARGET_CONTAINER
Concat (
const SRC_CONTAINER& v2, Args... args);
74 template <
typename SRC_CONTAINER,
typename... Args>
75 vector<typename SRC_CONTAINER::value_type>
Concatenate (
const SRC_CONTAINER& v2, Args... args);
81 bool Intersects (
const set<T>& s1,
const set<T>& s2);
89 set<T>
Intersection (
const set<T>& s1,
const set<T>& s2);
93 vector<T>
Intersection (
const vector<T>& s1,
const vector<T>& s2);
97 template <
typename T,
typename FROMCONTAINER>
98 void Union (set<T>* s1,
const FROMCONTAINER& s2);
99 template <
typename T,
typename FROMCONTAINER>
100 set<T> Union (
const set<T>& s1,
const FROMCONTAINER& s2);
104 template <
typename T,
typename FROMCONTAINER>
105 void Difference (set<T>* s1,
const FROMCONTAINER& s2);
106 template <
typename T,
typename FROMCONTAINER>
107 set<T> Difference (
const set<T>& s1,
const FROMCONTAINER& s2);
116#include "Utilities.inl"
set< T > Intersection(const set< T > &s1, const set< T > &s2)
bool Intersects(const set< T > &s1, const set< T > &s2)
void Append(TARGET_CONTAINER *v)
bool equal(const ITERABLE_OF_T &lhs, const ITERABLE_OF_T &rhs, EQUALS_COMPARER &&equalsComparer={})
vector< typename SRC_CONTAINER::value_type > Concatenate(const SRC_CONTAINER &v2, Args... args)
construct a new vector<T> by concatenating the args together. Alias for Concat<vector<typename SRC_CO...
TARGET_CONTAINER Concat(const SRC_CONTAINER &v2, Args... args)
construct a new STL container by concatenating the args together.