在这个程序中我想转换图表。作为输入,我应该得到一个邻接矩阵,将图形存储为矢量类型结构中的邻居列表,并再次将该图形作为邻接矩阵输出。我在向量中分配值时遇到问题。如何将输入存储为矢量,它是否可行?
这是我的完整代码。提前谢谢。
#include<iostream>
#include<vector>
using namespace std;
struct edge
{
int x,y;
};
int n,a[1024][1024];
vector<edge> v;
void read()
{
int temp,k=0;
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cin>>temp;
if(temp==1)
{
// Here I want to make v[k].x=i
// Here I want to make v[k].y=j
k++;
}
}
}
}
void print()
{
int k=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(v[k].x==i||v[k].y==j)
{
cout<<1<<" ";
k++;
}
else
{
cout<<0<<" ";
k++;
}
}
cout<<endl;
}
}
int main()
{
read();
for(int i=0;i<n;i++)
cout<<v[i].x<<" "<<v[i].y<<endl;
//print();
return 0;
}
答案 0 :(得分:1)
最好编写一个简单的2或3行程序,以熟悉vector
和其他类的工作方式。一旦你让程序运行起来,你就可以将这些更改应用到你正在尝试开发的大型程序中。
如果你这样做了,你应该很快发现vector::push_back
函数提供了一种向向量添加条目的方法:
edge ed;
ed.x = i;
ed.y = j;
v.push_back(ed);
另外,创建一个小程序的另一个好处是你可以清除你可能犯的任何错误。例如,由于向量为空,因此原始尝试显示的访问元素k
可能已崩溃,从而表明您做错了。