c++ - 无向图关联矩阵实现
问题描述
在这里,我编写了一个小程序来使用关联矩阵来表示图形,并使用向量的向量来合并动态内存分配。
#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 个空向量组成的向量。试试看:
std::vector<std::vector<int> > adj(3, std::vector<int>(3));
推荐阅读
- wordpress - Visual Composer:将数据源缩小到具有 Category1 和 Category2 的帖子
- google-cloud-platform - 如何访问 Google ML Cloud Engine 上的数据集
- git - git大量文件没有被跟踪
- java - 将访问例程添加到源自 XSD 的 JAXB 生成的类集
- swift - 存储弱引用有时会导致泄漏
- dart - Flutter:如何制作随机颜色生成器背景
- postman - 使用文本分析 API 和 Postman 进行情绪分析
- html - 在 HTML 输入模式属性中转义“和”
- spring - 将 Spring Data JPA 与 Spring JPA 一起使用时的问题
- kotlin - kotlin 中 == 和 === 有什么区别