2015-07-21 49 views
-1

如果我有一个2D矢量(基本上代表一个图,第一列是最初的顶点,第二列是最后一个顶点),像这样,vector<vector<int> > myvec;如何初始化整数向量的向量?

我想存储这样的事情,

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

如果我要初始化myvec,那就是,做这样的事情与行的总数量(顶点数),然后我可以插入在适当的位置上的第二个顶点,初始化后IE浏览器(如果我进入顶点为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 
} 

你能帮助我的上述评论的问题以下?

谢谢!

+0

downvote的原因是什么? –

+0

您应该提交一个新问题,而不是编辑原始帖子 – yizzlez

回答

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); 

更新

如下实施的构造:

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

     vector<vector<int> > edges; 
}; 

而且使用它作为:

graph *mygraph = new graph(n); 

你不需要的成员变量vertices自起是顶点的数量。

+0

尺寸可以变化吗?就是说,'int v; CIN >> V;矢量> myvec(v);'? –

+0

@JohhnLui,是的大小可以是一个变量。这是一个运行时间参数。 –

+0

太好了,谢谢你的帮助。 :) –

1

只需使用:

myvec.resize(NUMBER_OF_VERTICES); 

然后,您可以:

myvec[startingvertex].push_back(endingvertex); 

来填补你的载体。