gpt4 book ai didi

C++ BOOST 库和捆绑属性

转载 作者:行者123 更新时间:2023-11-28 06:24:27 26 4
gpt4 key购买 nike

我正在尝试使用 Boost 制作一个图挖掘程序,所以我从图结构开始,这是我制作的代码:

#include <iostream>
#include <boost/graph/adjacency_list.hpp>
using namespace std;
using namespace boost;



//vertex
struct VertexProperties
{
int id;
int label;
VertexProperties()= default;
VertexProperties(unsigned i, unsigned l) : id(i), label(l) {}
};



//edge
struct EdgeProperties
{
unsigned id;
unsigned label;
EdgeProperties()= default;
EdgeProperties(unsigned i, unsigned l) : id(i), label(l) {}
};

//Graph
struct GraphProperties
{
unsigned id;
unsigned label;
GraphProperties()= default;
GraphProperties(unsigned i, unsigned l) : id(i), label(l) {}
};


//adjency list
typedef boost::adjacency_list<
boost::vecS, boost::vecS, boost::directedS,
VertexProperties,
EdgeProperties,
GraphProperties
> Graph;


//iterators
typedef boost::graph_traits<Graph>::vertex_descriptor vertex_t;
typedef boost::graph_traits<Graph>::edge_descriptor edge_t;
/***********************************************/
int main()
{
Graph g;
vertex_t v1 = boost::add_vertex(VertexProperties(1,10),g);
vertex_t v2 = boost::add_vertex(VertexProperties(2,20),g);
//edge_t e1= boost::add_edge(EdgeProperties(3,55),g);
std::cout << "Vertice: " <<num_vertices(g) << std::endl;
std::cout << "edges: " <<num_edges(g) << std::endl;

return 0;
}

这一行有问题:

edge_t e1= boost::add_edge(EdgeProperties(3,55),g);

如何创建此边缘?PS:代码对不对请告知(我指的是vue的概念桥)

最佳答案

注意:我使用的是 GCC 4.8(带有 -std=c++11 标志)和 Boost 1.48。

我发现您的代码存在两个问题。首先,传递给 boost::add_edge(...) 的前两个参数应该是与边关联的顶点。所以在你的情况下,电话是

edge_t e1= boost::add_edge(v1, v2, EdgeProperties(3,55),g);

其次,我理解的e1的类型应该是

std::pair<edge_descriptor, bool>

所以你的第二个 typedef 是

typedef std::pair<boost::graph_traits<Graph>::edge_descriptor, bool> edge_t;

或者,您可以只使用 auto 关键字来描述 e1 的类型。例如,

auto e1= boost::add_edge(v1, v2, EdgeProperties(3,55),g);

关于C++ BOOST 库和捆绑属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28752264/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com