gpt4 book ai didi

c++ - 无向图关联矩阵实现

转载 作者:行者123 更新时间:2023-12-02 10:30:50 25 4
gpt4 key购买 nike

这里我写了一个小程序来使用 incidence matrix 来表示图。 ,使用 vector 的 vector 来合并动态内存分配。

#include <iostream>
#include <vector>
#include <utility>
void print_graph(const std::vector<std::vector<int> > &adj);
void addEdge(std::vector<std::vector<int> >& adj, int u, int v);

int main()
{
// Initialise array to hold adjacency matrix, vec<>s is already dynamic
std::vector<std::vector<int> > adj(3);
addEdge(adj,0,1); // edge from node 0 to node 1
addEdge(adj,0,2);
addEdge(adj,1,2);
print_graph(adj);
// return 0;
}

void print_graph(const std::vector<std::vector<int> >& adj)
{
for(std::size_t i = 0; i < adj.size(); i++ )
{
for(std::size_t j = 0 ; j < adj[i].size(); j++ )
{
std::cout << adj[i][j]<< " ";
}
std::cout << std::endl;
}
}

void addEdge(std::vector<std::vector<int> >& adj, int u , int v)
{
adj[u][v]=1;
adj[v][u]=1;
}

程序崩溃了……每个段错误都来了,即使调试器打开了,我也迷路了。
我把它粘贴到编译器资源管理器中,感觉 std::__throw_bad_cast()@plt表示一个错误,但我不知道如何修复它...
任何人的想法?

最佳答案

这个说法:

std::vector<std::vector<int> > adj(3);

定义一个由 3 个空 vector 组成的 vector 。试试看:
std::vector<std::vector<int> > adj(3, std::vector<int>(3));

关于c++ - 无向图关联矩阵实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62315899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com