将值赋给向量类型struct的问题

时间:2014-09-03 17:55:31

标签: c++ vector struct

在这个程序中我想转换图表。作为输入,我应该得到一个邻接矩阵,将图形存储为矢量类型结构中的邻居列表,并再次将该图形作为邻接矩阵输出。我在向量中分配值时遇到问题。如何将输入存储为矢量,它是否可行?

这是我的完整代码。提前谢谢。

#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;
}

1 个答案:

答案 0 :(得分:1)

最好编写一个简单的2或3行程序,以熟悉vector和其他类的工作方式。一旦你让程序运行起来,你就可以将这些更改应用到你正在尝试开发的大型程序中。

如果你这样做了,你应该很快发现vector::push_back函数提供了一种向向量添加条目的方法:

edge ed;
ed.x = i;
ed.y = j;
v.push_back(ed);

另外,创建一个小程序的另一个好处是你可以清除你可能犯的任何错误。例如,由于向量为空,因此原始尝试显示的访问元素k可能已崩溃,从而表明您做错了。