C++ 使用STL(列表向量,即邻接列表)的图形-C++;

C++ 使用STL(列表向量,即邻接列表)的图形-C++;,c++,c++11,graph,stl,C++,C++11,Graph,Stl,我试图解决一个与图形相关的问题,所以我刚开始将图形表示为邻接列表。守则如下: #include <iostream> #include <list> #include <vector> #include <queue> #include <stack> using namespace std; class Graph { private: vector<list<int> > aLi

我试图解决一个与
图形相关的问题,所以我刚开始将图形表示为邻接列表。守则如下:

#include <iostream>
#include <list>
#include <vector>
#include <queue>
#include <stack>

using namespace std;

class Graph
{

    private:
        vector<list<int> > aList;
    public:
        Graph(int nodenum=10):aList(nodenum)
        {
            cout << "Created an adjacency list with "<< nodenum<< " nodes" << endl;
        }

        void addEdge(int from, int to)
        {
            aList[from].push_back(to);
            cout << "Executed" << endl;
        }

        int size()
        {
            return aList.size();
        }

};


int main() {

    Graph gObj(4);    // Graph's size is 4 nodes. 
    gObj.addEdge(0,1);
    gObj.addEdge(1,2);
    gObj.addEdge(2,0);
    gObj.addEdge(3,2);

    cout << "Destroyed" << endl;

    return 0;
}
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
类图
{
私人:
向量主义者;
公众:
图(int nodenum=10):列表(nodenum)
{

cout你把reserve和resize混淆了。reserve是一种优化,它只为将来推送元素腾出空间,而不必重新分配内存。
使用图形构造函数的第一个实现,或者在第二个实现中通过调整大小来更改保留

您将保留与调整大小混淆。保留是一种优化,它只为将来推送元素腾出空间,而不必重新分配内存。 使用图形构造函数的第一个实现,或者在第二个实现中通过调整大小来更改保留

Graph(int nodenum=10):aList(nodenum)
{
       cout << "Created an adjacency list with "<< nodenum<< " nodes" << endl;
}
Graph(int nodenum=10)
{
       aList.reserve(nodenum);
       cout << "Created an adjacency list with "<< nodenum<< " nodes" << endl;
}