2012-01-18 9 views
2

コードに問題があります。boost graph library Dijkstra exampleです。私はそれを変更して、私のバージョンではenumとLetterを使用せず、整数だけではありません。それはforループとtie関数だけでなく、最初の呼び出しを除く他のtie呼び出しについても不平を言っています。C++ブーストグラフライブラリ - ダイクストラ例

Declerations:

typedef std::pair<int, int> Edge; 

    const int num_edges = num_edge; 
    Edge edge_array[num_edges]; 
    int weights[num_edges]; 

    int size = 0; 
    for(itora = edges.begin(); itora != edges.end(); ++itora){ 
    int u = *itora; 
    ++itora; 
    int v = *itora; 
    ++itora; 

    weights[size] = *itora; 
    edge_array[size] = Edge(u,v); 

    size++; 
    } 


    graph_traits<graph_t>::vertex_iterator i, iend; 
    #if defined(BOOST_MSVC) && BOOST_MSVC <= 1300 
    graph_t g(vertices.size()); 
    property_map<graph_t, edge_weight_t>::type weightmap = get(edge_weight, g); 

    std::vector<vertex_descriptor> msvc_vertices; 
    for (boost::tie(i, iend) = vertices(g); i != iend; ++i){ 
    msvc_vertices.push_back(*i); 
    } 

    for (std::size_t j = 0; j < num_edges; ++j) { 
    edge_descriptor e; bool inserted; 
    boost::tie(e, inserted) = add_edge(msvc_vertices[edge_array[j].first], 
             msvc_vertices[edge_array[j].second], g); 
    weightmap[e] = weights[j]; 
    } 

が壊れない:

for (boost::tie(i, iend) = vertices(g); i != iend; ++i){ 
    msvc_vertices.push_back(*i); 
} 

この部分が破断する:ここで

graph_traits<graph_t>::vertex_iterator xi, xiend; 
for (boost::tie(xi, xiend) = vertices(g); xi != xiend; ++xi) { 
    indexmap[*xi] = c; 
    name[*xi] = '0' + c; 
    c++; 
} 

は誤りです:

x.cc: In function 'int main(int, char**)': 
x.cc:141: error: no match for call to '(std::vector<int, std::allocator<int> >) (main(int, char**)::graph_t&)' 
gmake: *** [x.o] Error 1 

何か助けていただければ幸いです。

答えて

4

ローカル変数std::vector<int> verticesを引用符なしのコードのどこかに作成しましたか?

+0

verticesはインポートされたライブラリの一部です。std :: pair Jim

+0

他に何かできることは分かりますか? – Jim

+3

@ジム:私は私の元々の推測に固執する。あなたは引用符で囲まれたコードを変更したようですが、今は私の理論を支持していると思われる 'vertices.size()'を見ています。関数 'vertices()'に、クラス 'std :: vector'が' operator() 'を実装していない変数' vertices'を使って影を付けました。 –

関連する問題