| 21 | }; |
| 22 | |
| 23 | std::vector<bool> create_duplication_mask(const MatrixIr& edges) { |
| 24 | const size_t num_edges = edges.rows(); |
| 25 | |
| 26 | std::unordered_set<Duplet, hash> unique_set; |
| 27 | std::vector<bool> mask(num_edges, false); |
| 28 | |
| 29 | for (size_t i=0; i<num_edges; i++) { |
| 30 | const auto& edge = edges.row(i); |
| 31 | Duplet key(edge[0], edge[1]); |
| 32 | auto itr = unique_set.find(key); |
| 33 | if (itr == unique_set.end()) { |
| 34 | unique_set.insert(key); |
| 35 | } else { |
| 36 | mask[i] = true; |
| 37 | } |
| 38 | } |
| 39 | |
| 40 | return mask; |
| 41 | } |
| 42 | |
| 43 | template <typename T> |
| 44 | T filter(const T& data, const std::vector<bool>& mask) { |
no test coverage detected