C++ 图算法工具类创建模板

目录

前言

0. 声明和引用

1. 节点模板

2. 边模板

3. 图模板


前言

本文记录了三个图算法常用类的创建模板,小伙伴们可以根据需要取用,实际使用时根据需求更改即可。本文中记录的代码模板并不一定是运行效率最高的,但个人认为可以作为基础模板进行更改。文中使用的边类型是按照有向边来设计的,使用时可以自行修改为无向边,或者使用成对使用有向边。要注意,用本文中的类实例化出的类所记录的信息可能是冗余的,比如所有节点都记录了从它们自己出发的边和临近的节点,如果边和节点以相同顺序记录那么在边类型中记录起始节点和终点节点就是冗余的。再比如节点的出度也可以从边的集合中直接算出。但这样构建代码我认为在对代码效率要求不是非常高的场合能更清晰一些。更符合面向对象编程的要求。

0. 声明和引用

因为图类型用到了哈希表,所以也要提前引用unordered_map/set。并且图类前自定义的哈希函数类用到了STL给的hash函数,所以hashtable.h也要引用。typeinfo是用来提取类名称信息的。

#include <iostream>
#include <vector>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <hashtable.h>
#include <typeinfo>


class Edge;
class Node;
class Graph;

using namespace std;

1. 节点模板

节点模板主要记录了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值