c++ - 如何使用 vector 的 vector 来读取图形?

标签 c++ c++11 stl graph-algorithm

#include <iostream>
#include <vector>
using namespace std;
void addEdge( vector<vector<int> > adj, int, int);
void print_graph(vector<vector<int> > adj);


int main()
{

    vector<vector<int> > adj(4);
    addEdge(adj,1,2);     // edge from node 1 to node 2
    addEdge(adj,1,3);
    addEdge(adj,1,4);
    addEdge(adj,2,3);
    addEdge(adj,3,4);
    print_graph(adj);
    return 0;
}

void addEdge(vector<vector<int> > adj, int u , int v)
{
    adj[u].push_back(v);

}

void print_graph( vector<vector<int> > adj)
{
    for( int i = 0; i < adj.size() ; i++ )
    {
        for( int j = 0 ; j < adj[i].size(); j++ )
        {
            cout<< i+1 << " , " << cout<< adj[i][j]<<endl;
        }
    }
}

我已经编写了读取图形并打印它的代码。
在此之前,我曾经使用

阅读图表
vector<int>adj[5]; 

但有人告诉我,使用

`vector<vector<int> > adj`  or `list<list<int> > adj`  

我试过了,但现在我得到的是无输出(更新)

谁能帮我使用vector of vector ??也请帮助list of list

最佳答案

要使用 vectorvector,你可以这样写

std::vector<std::vector<int>> adj(5); // Note: round parentheses

这是可行的,因为标准 vector 有一个构造函数,它接受请求的大小作为参数并默认初始化所有元素。

作为 adj vector 的 vector ,adj 的元素将被初始化为空 vector ,稍后您可以用 push_back 填充它。

关于c++ - 如何使用 vector 的 vector 来读取图形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43153749/

相关文章:

c++ - 如何使用 Doxygen 记录具有相同名称的枚举值?

c++ - 正确实现删除 vector 元素

C++ STL 使用一组指针访问类的成员

c++ - 转换 std::basic_string<wchar_t> 和 std::basic_string<uint16_t>

c++ - 如何将dll文件强加到当前目录下?

c++ - c++11 中的内存建模测试,对 memory_order_relaxed 感到好奇

c++ - 为什么多行宏在每行末尾都有反斜杠?

c++ - 在类之间共享成员函数

c++ - Call by pointer 变成 call by reference to pointer

c++ - 跨 DLL 边界访问虚拟方法是否安全/可能?