如何初始化整数向量的向量?

时间:2015-07-21 19:31:08

标签: c++ vector

如果我有一个二维矢量(基本上代表一个图形,第一列是初始顶点,第二列是最终顶点),像这样,vector<vector<int> > myvec;

我想存储这样的东西,

0 -> 1 2 
1 -> 2 3
2 -> 3 4
3 -> 4 5
5 -> 1 2

如果我想初始化myvec,也就是说,用总行数(顶点数)做这样的事情然后我可以在适当的位置插入第二个顶点,即在初始化之后(如果我输入顶点数为6),我希望它看起来像这样,

0 ->
1 ->
2 ->
3 ->
4 ->
5 ->

然后我可以使用

插入适当的边缘
myvec[startingvertex].push_back(endingvertex) // with starting vertex and ending vertex taken as input

我该怎么办?谢谢!

编辑:我有:

class graph
{
    int vertices;
    vector<vector<int> > edges;
}

main中,我执行以下操作

int main (void)
{
    int i,n;
    cout<<"How many vertices do you wish to enter\n";
    cin>>n;
    graph *mygraph = new graph;
    mygraph->vertices = n;
    mygraph->edges // How can I initialise it here? 
   ......... // Rest of the code
}

你能帮我解决上面提到的问题吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

只需使用:

myvec.resize(NUMBER_OF_VERTICES);

然后你可以:

myvec[startingvertex].push_back(endingvertex);

填充你的载体。

答案 1 :(得分:1)

// Create myvec with 6 elements in it.
vector<vector<int> > myvec(6);

// Add items to the first item of myvec
myvec[0].push_back(1);
myvec[0].push_back(2);

// Add items to the sixth item of myvec
myvec[5].push_back(10);
myvec[5].push_back(25);

<强>更新

实现graph的构造函数,如下所示:

class graph
{
   public:
      grapah(int n) :  edges(n) {}

      vector<vector<int> > edges;
};

并将其用作:

graph *mygraph = new graph(n);

您不需要成员变量vertices,因为edges.size()是顶点数。