如果我有一个二维矢量(基本上代表一个图形,第一列是初始顶点,第二列是最终顶点),像这样,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
}
你能帮我解决上面提到的问题吗?
谢谢!
答案 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()
是顶点数。