Boost :: сжатый_спарс_row_graph использование - PullRequest
0 голосов
/ 25 апреля 2019

Я работаю над огромным и статичным графиком, а затем считаю, что boost ::ressed_sparse_row_graph вполне соответствует моим требованиям. Я пытаюсь запустить граф с некоторым кодом ниже;

typedef uint32_t vertex_id;
typedef uint32_t edge_id;

struct MyVertex{
    vertex_id id;
// and other attributions
}

struct MyEdge{
    edge_id id;
//and other attributions
}

// graph define
typedef boost::compressed_sparse_row_graph<
        boost::bidirectionalS,
        MyVertex,
        MyEdge,
        boost::no_property,
        vertex_id,
        edge_id
> graph_t

std::vector<MyVertex> vertex_vector;
std::vector<MyEdge> edge_vector;

//this is the graph connection vertex_id->edge_id->vertex_id
std::unordered_map<vertex_id, std::unordered_map<vertex_id, edge_id>> out_adj; 

// init above from file ...

graph_t my_graph;

//add vertex
for (uint32_t i = 0; i < vertex_vector.size(); ++i) {
    vertex_id this_vertex_id = boost::add_vertex(my_graph, vertex_vector[i]);
    assert(i==this_vertex_id);
}

Но я застрял с boost :: add_edges, а документ boost неясен. Как я могу добавить ребро с определенным индексом? Кто-нибудь может дать эффективный код инициализации? И как я могу получить доступ к вершине / ребру по индексу после инициализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...