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.

Foi útil?

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 um exemplo no impulso .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top