本项目对C++标准库的主要功能进行了重写,总代码量约为一万行。
这个项目给了我许多的启发和知识,让我有很深的感触。当完成这个项目之后,我才对C++这门语言有了比较深的认识。 实话说,这个项目看似简单,其实却一点都不容易。抛开数据结构和算法的难度,它更多给我带来的是搜寻资料和解决BUG的痛苦。
本项目实现了标准库的几乎全部容器和大多数的算法。
项目的容器和算法的创建加入了一些我自己的想法,通过与标准库的对比,我对数据结构有了更深的认识,也对算法更加得心应手。期
间付出了很高的学习成本,其实容器和算法我都写过很多遍,但在更深刻的学习和查阅资料之后,我又对原来的代码不满意,总是删删
写写,重复了许多遍。不过正是这样的重复,我才认识到了自己的不足也有了很大的进步,感觉自己真正学到了东西,有了自己的理解。
本项目大量运用到了泛型和元编程技术。
这一部分可以说是给我冲击最大的一部分,在阅读了《C++ Primer》之后,我感觉自己C++已经入了门,但接触到元编程后,我才感
到自己的想法是多么幼稚。在最初开始本项目之前,我没有借鉴其他类似项目的经验,也没有认真了解标准库的实现方式,按照自己的
想法实现了不少容器,直到我遇到了容器和算法的兼容问题,我才了解到元编程的存在。这可以说是我收获最大的一部分了,我了解到
了编译器推断的强大,原来天书一般的标准库现在也能看出一点门道。但代价就是,之前写过的代码现在要重写一次。其实这都不算难
点,对于元编程的学习才是更大的痛苦,许多原理不是看一遍就能明白的,要反反复复理解许多遍才能明白并实现出来。最后不得不感
叹C++泛型元编程的强大,减少了许多不必要的代码,实现了许多看似不可能的功能,极大的改变了我原有的编程思路,实在是受益匪
浅。
重写后按照功能进行了再划分,重新设计了架构。
实际上手做一个项目,才能体会到好的架构思路的重要性。最初的我并没有意识到这个问题,写出来的代码结构杂乱无章,当我遇到了
兼容问题后,才意识到自己的问题。我写了太多冗余而重复的代码,我终于意识到了封装,代码重用的好处,意识到了架构的作用,这
不仅对与我C++的学习,更是对于我整个编程思路的一次历练。