我已声明如下边缘
typedef std::pair<int, int> Edge;
我的边缘从文件中读取并存储在edge_array []
中Edge edge_array[] = { Edge(A, C), Edge(B, B), Edge(B, D), Edge(B, E),
Edge(C, B), Edge(C, D), Edge(D, E), Edge(E, A), Edge(E, B)
};
输入文件就像....
A C 1
B B 2
B D 3
阅读我使用的图表
for(int i=1;i<=num_arcs;i++)
{
int f;
int s,w;
infile >> f>> s>>w;
cout<<f<<s<<endl;
}
帮助我将这些边缘细节存储在edge_array中,如上所示。
完整的源代码是:
#include <boost/graph/adjacency_list.hpp>
#include <fstream>
#include <boost/graph/graphviz.hpp>
using namespace std;
using namespace boost;
int main(){
typedef adjacency_list <listS, vecS, directedS,
no_property, property < edge_weight_t, int > > Graph;
typedef graph_traits<Graph>::vertex_descriptor vertex_descriptor;
typedef boost::graph_traits <Graph>::edge_iterator edgeIt;
typedef boost::graph_traits<Graph>::vertex_iterator vertexIt;
typedef std::pair<int, int> Edge;
Graph G;
std::ifstream infile("di1.dat");
int num_arcs;
if(infile >> num_arcs){
std::cout << num_arcs << endl;
}
std::vector<Edge> edge_array;
for(int i=0;i<=num_arcs;i++)
{
int f;
int s,w;
infile >> f>> s>>w;
Edge E(f, s);
edge_array.push_back(E);
}
for(int j=0;j<num_arcs;j++){
cout<<edge_array[j]<<" ";
}
return 0;
}
答案 0 :(得分:1)
使用向量存储数据:
std::vector<Edge> edge_array;
然后阅读文件
for(int i=1; i<=edges; i++){
infile >> f >> s >> w;
Edge E(f, s);
edge_array.push_back(E);
}
修改强>
第一个可能的问题:你没有包含vector
#include <vector>
第二个可能的问题:cout无法打印一对
cout << edge_array[j].first << ", " << edge_array[j].second << endl;