创业其实是一种精神,是一种心态。创业有很多种形式,不是只有自己办公司、自己当老板才叫做创业。当你的人生还处于起步阶段,你还不具备足够的经验和能力,就需要给人当学徒,需要学习和积累,其实这个过程也是创业。
Code
2010年9月30日星期四
2010年9月25日星期六
有关自己写常用的数据类型
这两天为了一个vsc++ priority queue 的bug浪费了不少时间。我的pqueue是用来储存struct的pointers。我用下面这种方法创建:
priority_queue<CellNode*, vector<CellNode*>, M_compare> openq;
M_compare也是用常规方法写的,跟官网上完全一样的格式。但我run程序的时候总是给我invalid heap的错误。网上搜一下后好象是说queue里的东西没有initialize或者是queue里的container access invalid address。然后我用vs debugger trace stack,发现在call了好几次我的comparator之后comparator的parameter会变成一个很大的负数,我觉得非常奇怪。看ms debugger源码里的那些程序感觉也不是很对,就很是抓狂。
最后觉悟了,我要的无非是一个简单的priority queue,我不需要很有效率的检索,因为我的数据集不是很大,完全没有必要用heap这么复杂的structure来实现。我也不需要通用,因为就只有我一个人用。 然后我就花10分钟写了一个很简单的pqueue。我用list来做container因为他的insert和remove比较快。在pop()里面我就用了一个linear search来找我的head,这样的complexity也就只有O(n)而已。push()和empty()也就是list自己的push_back和empty。额,感觉这个太简单了。用了一下,run without any error!
用vsc++里面的data structure,好处是不用自己写。但是出问题了是很难debug的。所以今后小的data structure可以先考虑自己写,也许节省的就不只两天的时间了。
priority_queue<CellNode*, vector<CellNode*>, M_compare> openq;
M_compare也是用常规方法写的,跟官网上完全一样的格式。但我run程序的时候总是给我invalid heap的错误。网上搜一下后好象是说queue里的东西没有initialize或者是queue里的container access invalid address。然后我用vs debugger trace stack,发现在call了好几次我的comparator之后comparator的parameter会变成一个很大的负数,我觉得非常奇怪。看ms debugger源码里的那些程序感觉也不是很对,就很是抓狂。
最后觉悟了,我要的无非是一个简单的priority queue,我不需要很有效率的检索,因为我的数据集不是很大,完全没有必要用heap这么复杂的structure来实现。我也不需要通用,因为就只有我一个人用。 然后我就花10分钟写了一个很简单的pqueue。我用list来做container因为他的insert和remove比较快。在pop()里面我就用了一个linear search来找我的head,这样的complexity也就只有O(n)而已。push()和empty()也就是list自己的push_back和empty。额,感觉这个太简单了。用了一下,run without any error!
用vsc++里面的data structure,好处是不用自己写。但是出问题了是很难debug的。所以今后小的data structure可以先考虑自己写,也许节省的就不只两天的时间了。
2010年9月23日星期四
搬入PGP 新生活的开始
没想到大四的我阴差阳错的有搬回PGP了。在外面住久了才知道原来住PGP是一件这么美好的事情。有自己的个人空间,安静,有好吃的饭菜,早上有早餐吃,凌晨都还有的super snack,最爽的是这边的network刚刚升级,网速比以前快多了,特别是上些国内的网站(可能是因为这里proxy用的中国人比较多)。这些比起我在clementi住的那栋2加1的爽多了。唉。。现在还挺感慨的。想起我大一住PGP block 4的时候,那时还满怀着刚进大学的兴奋感,如今快要毕业的我整天想着今后要做的事业,想着怎么样才能够让自己变得真正的强。感觉,四年来我还是有所成长的吧。现在又回到了PGP,一定要珍惜这个机会,踏实学习,专注自己的梦想。
订阅:
博文 (Atom)