Distances on Directed Graphs in R
1#pragma once
2
3#include <vector>
4#include <unordered_set>
5#include <unordered_map>
6
7#include <Rcpp.h>
8// [[Rcpp::plugins(cpp11)]]
9// [[Rcpp::depends(RcppParallel,RcppThread)]]
10#include <RcppThread.h>
11#include <RcppParallel.h>
12
13namespace deduplicate {
14
15typedef std::pair <std::string, std::string> str_pair;
16
17struct str_pair_hash
18{
19 std::size_t operator() (const std::pair <std::string, std::string> &pair) const {
20 return std::hash <std::string> () (pair.first) ^ std::hash <std::string> () (pair.second);
21 }
22};
23
24typedef std::unordered_map <deduplicate::str_pair, double, deduplicate::str_pair_hash> EdgeMapType;
25
26void update_dupl_edge_map (deduplicate::EdgeMapType &edge_map,
27 const str_pair &this_pair, const double &val);
28
29} // end namespace deduplicate
30
31Rcpp::DataFrame rcpp_deduplicate (const Rcpp::DataFrame &graph, const std::string fr_col, const std::string to_col,
32 const std::string d_col, const std::string t_col);