Impulsionar adjacency_list ajuda necessária
-
03-07-2019 - |
Pergunta
Eu estou tentando tipo adjacency_list uso do impulso e estou tendo dificuldade para entender o documentação .
Say I definir uma classe chamada Estado e eu instanciar uma instância para cada estado nos EUA:
class State { ... };
State california, oregon, nevada, arizona, hawaii, ...
Eu quero entrar estes em um boost :: adjacency_list os vértices são estados e as bordas são fronteiras. Para os estados que listei acima, eu acho que o gráfico teria esses dados:
california : oregon, nevada, arizona
hawaii :
oregon : california, nevada
nevada : oregon, california, arizona
arizona : california, nevada
Eu entendo como colocar ints em gráfico e I considerado apenas fazendo uma série de estados e inserindo seu índice de matriz para o gráfico, mas parece que eu deveria ser capaz de dizer apenas:
add_edge(california, oregon, graph);
mas é claro que não funciona. Por favor, ajuda!
Editar:
Aqui está um exemplo de quase exatamente o que eu necessidade.
Solução
Lendo sobre boost :: adjacency_list, parece que você é suposto usar propriedades para os vértices em vez de algo como uma classe:
struct VertexProperties {
std::string stateName;
};
typedef adjacency_list<listS, listS, bidirectionalS, VertexProperties> Graph;
Graph adjacentStates(50);
property_map<Graph, std::string VertexProperties::*>::type
stateName = get(&VertexProperties::stateName, adjacentStates);
add_edge(vertex("california", adjacentStates), vertex("oregon", adjacentStates), adjacentStates);
(mal) adaptado a partir de