Skip to content

Taganyer/tinySTL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tinySTL

本项目对C++标准库的主要功能进行了重写,总代码量约为一万行。

这个项目给了我许多的启发和知识,让我有很深的感触。当完成这个项目之后,我才对C++这门语言有了比较深的认识。 实话说,这个项目看似简单,其实却一点都不容易。抛开数据结构和算法的难度,它更多给我带来的是搜寻资料和解决BUG的痛苦。

数据结构与算法

本项目实现了标准库的几乎全部容器和大多数的算法。
项目的容器和算法的创建加入了一些我自己的想法,通过与标准库的对比,我对数据结构有了更深的认识,也对算法更加得心应手。期 间付出了很高的学习成本,其实容器和算法我都写过很多遍,但在更深刻的学习和查阅资料之后,我又对原来的代码不满意,总是删删 写写,重复了许多遍。不过正是这样的重复,我才认识到了自己的不足也有了很大的进步,感觉自己真正学到了东西,有了自己的理解。

泛型元编程

本项目大量运用到了泛型和元编程技术。
这一部分可以说是给我冲击最大的一部分,在阅读了《C++ Primer》之后,我感觉自己C++已经入了门,但接触到元编程后,我才感 到自己的想法是多么幼稚。在最初开始本项目之前,我没有借鉴其他类似项目的经验,也没有认真了解标准库的实现方式,按照自己的 想法实现了不少容器,直到我遇到了容器和算法的兼容问题,我才了解到元编程的存在。这可以说是我收获最大的一部分了,我了解到 了编译器推断的强大,原来天书一般的标准库现在也能看出一点门道。但代价就是,之前写过的代码现在要重写一次。其实这都不算难 点,对于元编程的学习才是更大的痛苦,许多原理不是看一遍就能明白的,要反反复复理解许多遍才能明白并实现出来。最后不得不感 叹C++泛型元编程的强大,减少了许多不必要的代码,实现了许多看似不可能的功能,极大的改变了我原有的编程思路,实在是受益匪 浅。

架构构思

重写后按照功能进行了再划分,重新设计了架构。
实际上手做一个项目,才能体会到好的架构思路的重要性。最初的我并没有意识到这个问题,写出来的代码结构杂乱无章,当我遇到了 兼容问题后,才意识到自己的问题。我写了太多冗余而重复的代码,我终于意识到了封装,代码重用的好处,意识到了架构的作用,这 不仅对与我C++的学习,更是对于我整个编程思路的一次历练。

这个项目属于入门项目,给我的不是实用,更多的是历练与考验。

About

模仿C++标准库创建的简易标准库

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages