Skip to content

gitgou/learnCPP_CN

Repository files navigation

CPP 学习路线规划及样例代码:

介绍:

​ 本项目主要总结了 C++ 学习路线, 并且推荐学习参考代码、相关知识网址、博客。项目中代码有详细知识点注解,推荐大家把样例代码动手敲一遍,时间安排仅为建议时间、可根据自己进度自由调整~~

Start

类(class):

类 (class):

​ STL 六大组件:容器(container)、算法(Algorithm)、迭代器(Iterator)、函数对象(Functional Object)、内存分配器(Allocator)、适配器(Adapter)

小训练

  • RAII

    ​ RAII全称是“Resource Acquisition is Initialization”,即 “资源请求即初始化”, 为解决资源管理时异常安全性所使用的资源管理方法。

    ​ 掌握 auto_ptr(C++17 已经被正式从C++标准里删除了)、unique_ptrshared_ptrweak_ptr 原理及用法; 样例代码中用法都有介绍。

    重点掌握 unique_ptr 原理,shared_ptr 原理(引用计数管理方法),weak_ptr 与 shared_ptr的区别:weak_ptr是为了配合shared_ptr而引入的一种智能指针,它指向一个由shared_ptr管理的对象而不影响所指对象的生命周期,也就是将一个weak_ptr绑定到一个shared_ptr不会改变shared_ptr的引用计数。不论是否有weak_ptr指向,一旦最后一个指向对象的shared_ptr被销毁,对象就会被释放。从这个角度看,weak_ptr更像是shared_ptr的一个助手而不是智能指针。

    博客分享

    RAII样例代码

  • 数据结构

    LRU Algorithm

  • 排序算法

    实现以下排序算法,熟悉排序算法原理、平均(最坏)时间复杂度、稳定性等指标,熟悉各排序算法应用场景。

    快排

    大小顶堆排序

    归并排序

  • LeetCode 算法

    https://github.com/gitgou/LeetCode

    Tips: 后续会将 LeetCode 刷题记录整理出来。

  • STL string cow,写时复制(0 copy):

    了解深拷贝和浅拷贝的区别,详情请参考两篇博客博客分享 维基百科

    stl_string_cow_code

  • STL 函数对象:

    重载函数调用操作符的类,其对象称为函数对象(function object)

    STL bind 函数

  • 设计模式:

    这里只举例了三种设计模式:单例、观察者、PIMPL模式

​ 总共有二十几种设计模式,重点掌握单例模式、观察者模式、工厂模式、代理模式、外观模式、适配器模式;推荐学习网站:设计模式图解设计模式;后续再补充其它设计模式代码。

未完待续...

因时间紧促,资料补充不够充分,后续会陆续补充;有误之处,还望多多指正,也欢迎一起参与项目建设,联系方式见 github 主页,感谢。