博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
图写成一个类(2)
阅读量:4577 次
发布时间:2019-06-08

本文共 1256 字,大约阅读时间需要 4 分钟。

上次的东西:

1 const int maxn=1e4+5, maxm=1e5+5; 2  3 class Graph{ 4 public: 5     //为什么用嵌套类,因为声明很烦。。并不是访问问题的原因。 6     //如果类的成员不是static的话,内部类是不知道获取哪个外部类对象的。。 7     //所以无论是把类放在里面还是外面,访问都有问题。 8     //另外,把private放在下面,应该是因为嵌套类类必须完全声明才能使用吧。。 9     //我也不大清楚。。先这么用着,以后再去翻c++ primer。10     class Edge{11     private:12         Graph *belong;13     public:14         int v, to, next; //感觉这里还是不优雅。。15         Edge(){}16         Edge(Graph& g, int x, int y, int z){17             belong=&g;18             to=x, v=y, next=z;19         }20         Edge operator ++(){ //不能打引用!21             *this=belong->edge[next]; //因为有自增运算,这个edge不能等同于图中的!22             return *this;23         }24         int operator *(){25             return to;26         }27     };28     Graph(){}29     void addedge(int x, int y, int v){30         ++cntedge;31         edge[cntedge]=Edge(*this, y, v, fir[x]);32         fir[x]=cntedge;33         return;34     }35     Edge get_link(int x){ //这里改成begin较好36         return edge[fir[x]];37     }38 private:39     int cntedge, fir[maxn];40     Edge edge[maxm];41 };

具体思想就是直接用边来做迭代器。。不过因为这个迭代器啊,它有自增运算,所以作为迭代器的边必须重新创造(不然整个图就萎掉了)。

接着还会有第三版的。。感觉c++STL的思想确实值得借鉴。不过感觉这个版本还是不优雅,我会在保证代码简洁易背的的情况下尽可能的让它更优雅。。

转载于:https://www.cnblogs.com/MyNameIsPc/p/7475731.html

你可能感兴趣的文章
进程、单线程和多线程
查看>>
python入门(3)python的解释器
查看>>
maven入门(1-3)构建简单的maven项目
查看>>
git 清除本地无效的分支
查看>>
poj1001--Exponentiation
查看>>
Python基础(迭代)
查看>>
webpack -p无效解决方式
查看>>
使用 PHP 获得网页内容 GET方式
查看>>
TJU Problem 2857 Digit Sorting
查看>>
C# 修饰符
查看>>
Centos以rpm方式进行安装MySql
查看>>
supervisor
查看>>
洛谷P1081 开车旅行70分
查看>>
Linux中用户及用户组
查看>>
python常用sql语句
查看>>
退休惠普九大感言——根源(虽然不是孙振耀写的,但正如孙振耀本人所说:写这篇文章的人对大家的影响、启发,内容比谁来写更有意义)...
查看>>
IE 下a标签在 position:absolute 后无法点击的问题
查看>>
jquery 正则表达式
查看>>
mysql查询更新时的锁表机制分析(只介绍了MYISAM)
查看>>
JDBC如何调用存储过程
查看>>