无向图关联矩阵实现

问题描述 投票:0回答:1

在这里,我编写了一个小程序来使用incidence matrix表示图形,并使用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指示错误,但我不知道如何修复...有任何想法吗?

c++ vector graph graph-algorithm
1个回答
0
投票

此声明:

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

定义一个3个空向量的向量。尝试:

std::vector<std::vector<int> > adj(3, std::vector<int>(3));
© www.soinside.com 2019 - 2024. All rights reserved.