Code Monkey home page Code Monkey logo

tinystl's Introduction

tinySTL

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

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

数据结构与算法

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

泛型元编程

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

架构构思

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

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

tinystl's People

Contributors

taganyer avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.