簡體   English   中英

如何使用Boost Graph Library布置頂點?

[英]How can I use the Boost Graph Library to lay out verticies?

我正在嘗試使用Boost Graph Library布置頂點。 但是,我遇到了一些不確定的編譯問題。 我是否以不當方式使用BGL? 我的代碼是:

PositionVec position_vec(2);
PositionMap position(position_vec.begin(), get(vertex_index, g));
int iterations = 100;
double width = 100.0;
double height = 100.0;
minstd_rand gen;
rectangle_topology<> topology(gen, 0, 0, 100, 100); 
fruchterman_reingold_force_directed_layout(g, position, topology); //Compile fails on this line

clang ++(我也嘗試過GCC)產生的診斷結果是:

In file included from test.cpp:2:
/Volumes/Data/mike/Downloads/boost_1_43_0/boost/graph/fruchterman_reingold.hpp:95:3: error: no member named 'dimensions' in
      'boost::simple_point<double>'
  BOOST_STATIC_ASSERT (Point::dimensions == 2);
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from test.cpp:2:
In file included from /Volumes/Data/mike/Downloads/boost_1_43_0/boost/graph/fruchterman_reingold.hpp:13:
In file included from /Volumes/Data/mike/Downloads/boost_1_43_0/boost/graph/graph_traits.hpp:15:
In file included from /Volumes/Data/mike/Downloads/boost_1_43_0/boost/tuple/tuple.hpp:24:
/Volumes/Data/mike/Downloads/boost_1_43_0/boost/static_assert.hpp:118:49: note: instantiated from:
      sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >)>\
                                                ^
In file included from test.cpp:2:
/Volumes/Data/mike/Downloads/boost_1_43_0/boost/graph/fruchterman_reingold.hpp:95:3: note: instantiated from:
  BOOST_STATIC_ASSERT (Point::dimensions == 2);
  ^                    ~~~~~~~
/Volumes/Data/mike/Downloads/boost_1_43_0/boost/graph/fruchterman_reingold.hpp:95:31: note: instantiated from:
  BOOST_STATIC_ASSERT (Point::dimensions == 2);
                       ~~~~~~~^
/Volumes/Data/mike/Downloads/boost_1_43_0/boost/graph/fruchterman_reingold.hpp:417:19: note: in instantiation of template class
      'boost::grid_force_pairs<boost::rectangle_topology<boost::random::linear_congruential<int, 48271, 0, 2147483647, 399268537> >,
      boost::iterator_property_map<__gnu_cxx::__normal_iterator<boost::simple_point<double> *,
      std::vector<boost::simple_point<double>, std::allocator<boost::simple_point<double> > > >,
      boost::vec_adj_list_vertex_id_map<boost::property<boost::vertex_name_t, std::basic_string<char>, boost::no_property>, unsigned
      long>, boost::simple_point<double>, boost::simple_point<double> &> >' requested here
                  make_grid_force_pairs(topology, position, g)),
                  ^
/Volumes/Data/mike/Downloads/boost_1_43_0/boost/graph/fruchterman_reingold.hpp:431:3: note: in instantiation of function template
      specialization
      'boost::fruchterman_reingold_force_directed_layout<boost::rectangle_topology<boost::random::linear_congruential<int, 48271, 0,
      2147483647, 399268537> >, boost::adjacency_list<boost::listS, boost::vecS, boost::undirectedS,
      boost::property<boost::vertex_name_t, std::basic_string<char>, boost::no_property>, boost::no_property, boost::no_property,
      boost::listS>, boost::iterator_property_map<__gnu_cxx::__normal_iterator<boost::simple_point<double> *,
      std::vector<boost::simple_point<double>, std::allocator<boost::simple_point<double> > > >,
      boost::vec_adj_list_vertex_id_map<boost::property<boost::vertex_name_t, std::basic_string<char>, boost::no_property>, unsigned
      long>, boost::simple_point<double>, boost::simple_point<double> &>, boost::square_distance_attractive_force,
      boost::attractive_force_t, boost::no_property>' requested here
  fruchterman_reingold_force_directed_layout
  ^
test.cpp:48:3: note: in instantiation of function template specialization
      'boost::fruchterman_reingold_force_directed_layout<boost::rectangle_topology<boost::random::linear_congruential<int, 48271, 0,
      2147483647, 399268537> >, boost::adjacency_list<boost::listS, boost::vecS, boost::undirectedS,
      boost::property<boost::vertex_name_t, std::basic_string<char>, boost::no_property>, boost::no_property, boost::no_property,
      boost::listS>, boost::iterator_property_map<__gnu_cxx::__normal_iterator<boost::simple_point<double> *,
      std::vector<boost::simple_point<double>, std::allocator<boost::simple_point<double> > > >,
      boost::vec_adj_list_vertex_id_map<boost::property<boost::vertex_name_t, std::basic_string<char>, boost::no_property>, unsigned
      long>, boost::simple_point<double>, boost::simple_point<double> &> >' requested here
  fruchterman_reingold_force_directed_layout(g, position, topology);
  ^
1 error generated.

:p當我確實需要用它來做某事時,我通常都不會做BGL代碼的頭或尾。通常,我會為要使用的功能簽出隨附的單元測試/示例文件。 很多時候那里有一個可以輕易修改的例子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM