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
6
7#include <vector>
8#include <assert.h>
9
10namespace RoutingKit{
11
12template<class T>
13void 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
27template<class T>
28void 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
42template<class T>
43std::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
48template<class T>
49std::vector<T> remove_element_from_vector_if(const BitVector&keep_filter, std::vector<T>vec){
51 return vec; // NVRO
52}
53
54} // RoutingKit
55
56#endif
uint64_t size() const
Definition bit_vector.h:26
bool is_set(uint64_t x) const
Definition bit_vector.h:34
void inplace_keep_element_of_vector_if(const BitVector &keep_filter, std::vector< T > &vec)
Definition filter.h:13
std::vector< T > keep_element_of_vector_if(const BitVector &keep_filter, std::vector< T >vec)
Definition filter.h:43
std::vector< T > remove_element_from_vector_if(const BitVector &keep_filter, std::vector< T >vec)
Definition filter.h:49
void inplace_remove_element_from_vector_if(const BitVector &remove_filter, std::vector< T > &vec)
Definition filter.h:28