1 |
sf-pippijn |
1.1 |
#pragma once |
2 |
|
|
|
3 |
|
|
template<typename T> |
4 |
|
|
typename std::vector<T>::iterator |
5 |
|
|
unordered_erase (std::vector<T> &vec, typename std::vector<T>::iterator iter) |
6 |
|
|
{ |
7 |
|
|
size_t pos = iter - vec.begin (); |
8 |
|
|
vec.at (pos) = vec.back (); |
9 |
|
|
vec.pop_back (); |
10 |
|
|
return vec.begin () + pos; |
11 |
|
|
} |
12 |
|
|
|
13 |
|
|
template<typename T> |
14 |
|
|
typename std::vector<T>::iterator |
15 |
|
|
unordered_erase (std::vector<T> &vec, typename std::vector<T>::size_type pos) |
16 |
|
|
{ |
17 |
|
|
return unordered_erase (vec, vec.begin () + pos); |
18 |
|
|
} |
19 |
|
|
|
20 |
|
|
template<typename T> |
21 |
|
|
typename std::vector<T>::iterator |
22 |
|
|
unordered_erase (std::vector<T> &vec, typename std::vector<T>::const_reference element) |
23 |
|
|
{ |
24 |
|
|
return unordered_erase (vec, &element - &vec.front ()); |
25 |
|
|
} |