我需要将阵列样式的邻接矩阵转换为矢量样式(以使其看起来更好)
i need to convert my array styled adjacency matrix into vector styled (to make it look better)
我是图形概念的新手,我只是想通过编写小型代码并使用它来学习它。我有一个基于2D数组的邻接矩阵无向图类,我想将其转换为2D向量。
我通过执行vector<vector<int>> graphed
初始化了一个向量。但是我无法在构造函数中对其进行修改,并且添加((函数也是不可行的。该代码正在给出逻辑错误和崩溃。显示功能只是二进制矩阵的奇特显示。那里的毫无疑问
#include<iostream>
#include<vector>
using namespace std;
class my_graph{
public:
vector<vector<int>> graphed;
int row=0;
int col=0;
my_graph(int size){
int row=size;
int col=size;
// what am i supposed to type here to make the graphed 2d vector
// size equal to the user provided size.
}
void add_edge(int i,int j){
graphed[i][j]=1;//am i supposed to use pushback() function here?
graphed[j][i]=1; // or is it fine?
}
void display(int size){
cout<<" ";
for(int i=0;i<size;i++){
cout<<" "<<i;
}
cout<<"n";
cout<<" ";
for(int i=0;i<2*size;i++){
cout<<"-";
}
cout<<"n";
for(int i=0;i<size;i++){
cout<<i<<"|";
for(int j=0;j<size;j++){
cout<<graphed[i][j]<<" ";
}
cout<<"n";
}
}
};
int main(){
int v=6;
my_graph g1(v);
g1.add_edge(1,2);
g1.add_edge(1,4);
g1.add_edge(1,5);
g1.add_edge(2,5);
g1.add_edge(2,3);
g1.add_edge(3,5);
g1.add_edge(3,0);
g1.add_edge(5,4);
g1.add_edge(0,4);
g1.add_edge(0,3);
g1.display(v);
return 0;
}
my desired output is
0 1 2 3 4 5
------------
0|0 0 0 1 1 0
1|0 0 1 0 1 1
2|0 1 0 1 0 1
3|1 0 1 0 0 1
4|1 1 0 0 0 1
5|0 1 1 1 1 0
thanks for helping.
要初始化 std::vector<std::vector<int>>
,您可以执行以下操作:
my_graph(int size){
int row=size;
int col=size;
graphed = std::vector<std::vector<int>>(size, std::vector<int>(size, 0));
}
这将把graphed
设置为size
矢量的向量,每个向量包含size
ZEROS。
使用成员初始化列表是常见的做法:
my_graph(int size)
: row(size), col(size),
graphed = std::vector<std::vector<int>>(size, std::vector<int>(size, 0))
{
}
除此之外,您的代码不需要更改即可使用std::vector
!
https://godbolt.org/z/lyctnv
相关文章:
- C++:将控制台输出存储在宏中更好吗
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 初始化具有非默认构造函数的std::数组项的更好方法
- 有没有比在库中添加一个并非由所有派生类实现的新虚拟函数更好的设计实践
- 为什么新的随机库比std::rand()更好
- 寻找一种更好的方法来表示无符号字符数组
- 哪种方法更好,性能明智
- 什么更好?返回对象指针列表?或返回指向对象列表的指针?
- 什么是更好的做法?通过指针或标识符传递类成员?
- 寻求更好地理解标准::访问
- 线程消息传递或更好:在"大师班"中访问其他班级的成员
- 有没有更好的方法来处理异常? try-catch块真的很丑
- 如何更好地检查两个 char 变量是否在一组值中?
- 有没有更好的方法对C++中的三个整数进行排序?
- 什么模板用法在阶乘中更好
- 平面缓冲区可以利用向量中的 0 吗?还是其他小波比哈尔变换更好?
- C++ - 创建具有相同字符的特定大小的以 null 结尾的 c 样式字符串的更好方法
- 我需要将阵列样式的邻接矩阵转换为矢量样式(以使其看起来更好)
- 哪种 c++ 构造函数样式更好
- C++,哪种参数样式更好,通过复制还是通过常量引用