Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
filter.h
Go to the documentation of this file.
1
#ifndef ROUTING_KIT_FILTER_H
2
#define ROUTING_KIT_FILTER_H
3
4
#include <
routingkit/constants.h
>
5
#include <
routingkit/bit_vector.h
>
6
7
#include <vector>
8
#include <assert.h>
9
10
namespace
RoutingKit
{
11
12
template
<
class
T>
13
void
inplace_keep_element_of_vector_if
(
const
BitVector
&keep_filter, std::vector<T>&vec){
14
assert(keep_filter.
size
() == vec.size());
15
16
uint64_t in = 0, out = 0, s = vec.size();
17
while
(in != s){
18
if
(keep_filter.
is_set
(in)){
19
vec[out] = std::move(vec[in]);
20
++out;
21
}
22
++in;
23
}
24
vec.erase(vec.begin() + out, vec.end());
25
}
26
27
template
<
class
T>
28
void
inplace_remove_element_from_vector_if
(
const
BitVector
&remove_filter, std::vector<T>&vec){
29
assert(remove_filter.
size
() == vec.size());
30
31
uint64_t in = 0, out = 0, s = vec.size();
32
while
(in != s){
33
if
(!remove_filter.
is_set
(in)){
34
vec[out] = std::move(vec[in]);
35
++out;
36
}
37
++in;
38
}
39
vec.erase(vec.begin() + out, vec.end());
40
}
41
42
template
<
class
T>
43
std::vector<T>
keep_element_of_vector_if
(
const
BitVector
&keep_filter, std::vector<T>vec){
44
inplace_keep_element_of_vector_if
(keep_filter, vec);
45
return
vec;
// NVRO
46
}
47
48
template
<
class
T>
49
std::vector<T>
remove_element_from_vector_if
(
const
BitVector
&keep_filter, std::vector<T>vec){
50
inplace_remove_element_from_vector_if
(keep_filter, vec);
51
return
vec;
// NVRO
52
}
53
54
}
// RoutingKit
55
56
#endif
constants.h
bit_vector.h
RoutingKit::BitVector
Definition
bit_vector.h:10
RoutingKit::BitVector::size
uint64_t size() const
Definition
bit_vector.h:26
RoutingKit::BitVector::is_set
bool is_set(uint64_t x) const
Definition
bit_vector.h:34
RoutingKit
Definition
bit_vector.h:8
RoutingKit::inplace_keep_element_of_vector_if
void inplace_keep_element_of_vector_if(const BitVector &keep_filter, std::vector< T > &vec)
Definition
filter.h:13
RoutingKit::keep_element_of_vector_if
std::vector< T > keep_element_of_vector_if(const BitVector &keep_filter, std::vector< T >vec)
Definition
filter.h:43
RoutingKit::remove_element_from_vector_if
std::vector< T > remove_element_from_vector_if(const BitVector &keep_filter, std::vector< T >vec)
Definition
filter.h:49
RoutingKit::inplace_remove_element_from_vector_if
void inplace_remove_element_from_vector_if(const BitVector &remove_filter, std::vector< T > &vec)
Definition
filter.h:28
src
foreign
RoutingKit
include
routingkit
filter.h
Generated on Wed Sep 23 2026 00:09:29 for Eclipse SUMO - Simulation of Urban MObility by
1.9.8