forked from rayofhope-dev/XRay-Shared
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathxrArrayHelpers.h
71 lines (59 loc) · 1.62 KB
/
xrArrayHelpers.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#pragma once
template<typename T, typename V>
V& array_find(const T& array, const V& item)
{
return std::find(array.begin(), array.end(), item);
}
template<typename T, typename V, typename Ret = typename T::value_type>
Ret array_find_nullable(const T& array, const V& item)
{
auto result = std::find(array.begin(), array.end(), item);
if (result != array.end())
return *result;
return nullptr;
}
template<typename T, typename V, typename Ret = typename T::value_type>
Ret array_findif_nullable(const T& array, const V& pred)
{
auto result = std::find_if(array.begin(), array.end(), pred);
if (result != array.end())
return *result;
return nullptr;
}
template<typename T, typename V>
bool array_erase(T& array, const V& item)
{
auto result = std::find(array.begin(), array.end(), item);
if (result != array.end())
{
array.erase(result);
return true;
}
return false;
}
template<typename T, typename V>
bool array_eraseif(T& array, const V& pred)
{
auto result = std::find_if(array.begin(), array.end(), pred);
if (result != array.end())
{
array.erase(result);
return true;
}
return false;
}
template<typename T, typename V>
bool array_exist(const T& array, const V& item)
{
return std::find(array.begin(), array.end(), item) != array.end();
}
template<typename T, typename V>
bool array_existif(const T& array, const V& pred)
{
return std::find_if(array.begin(), array.end(), pred) != array.end();
}
template<typename T, typename V>
void array_remove(T& array, const V& item)
{
std::remove(array.begin(), array.end(), item);
}