2015-07-21 84 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); 

來填補你的載體。