美文网首页
C++1.0、STL和设计模式的学习曲线1.0

C++1.0、STL和设计模式的学习曲线1.0

作者: im天行 | 来源:发表于2023-07-19 22:54 被阅读0次

缘起

  • 自己最近有种(错觉),感觉自己C++1.0,STL学习有点上道了,于是想着分享下,平日里脑海里在炫这事,先写下来,省点空间琢磨别的事
  • 劝退版
    • 科班的,有老师教C++,自己也跟着做作业的,可以不用看
    • 能看懂《深度探索C++对象模型》和《STL源码剖析》50%以上,写过《大话设计模式》里50%代码的,也可以不用看
    • 只是记录下非科班,自学的同志一点心得,也算是断舍离,把家里原有的书都好好啃下
  • 没有啥捷径,书还是要自己啃,代码还是要自己敲,我只是提供一条自己的学习曲线(说不定还是弯路),因为一搜C++学习,一般都是让看《C++ Primer》,可能我是菜鸡,一直没有建立起属于自己的知识框架起来,导致各种知识点都比较零散
  • 优先考虑学业务知识(网络协议、视频编解码)和基础知识(OS,DS,OO),而不是语言,编程语言只是工具,编程语言上道了之后,用语言去实现这些,会成为一个相辅相承的轮动进步
  • 用时73min,2023-07-20,21:40-22:53。

内容

学习方法

  • 1、孟岩的快速掌握语言最常用的50%,【有条件就一周假,前后就9天,找个图书馆,1天1章,死磕掉一本书,能学多少算多少,尽量不要选大部头,选自己能看得懂的书,后面再花1个季度的碎片化时间,去看经典和搞其它的】,把知识脉络建起来
  • 2、循环不断的复习,目的是强化知识脉络,之前我像一些blog一样,一章写个笔记,这样复习起来不太行(也可能是我的问题),后来我发现可以写一起,用mkdocs生成笔记,这样每天就有个链接可以随时看到,随时复习
  • 3、用C++去实现《大话设计模式》、《算法4》、《leetcode》的一些题

C++1.0

  • 零散看过不少书,但建立起脉络的不知道是C++项目的摔打呢,还是当时的书《从零开始学C++程序设计》,单看C++ OO的部分比较少,不过那时运算符重载还是不太熟(现在看来还是自己复习不够,用得少,也就慢慢忘了)
  • 有了一些C++基础后呢,就会被推荐看《effective C++》,但这本书呢,有太多STL的东西,不全是OO的东西,看得有点吃力,俺就比较吃力,我目前的想法是,先记住结论,再慢慢琢磨
  • 最近越来越觉得OO的重要性,其实可以有了C++基础语法后,自己用C++实现下《大话设计模式》的一些模式,可以先从创建型的来嘛(简单工厂、抽象工厂啥的),在这个里面跟IDE打交道,琢磨理解一些关键字和一些类的设计
  • 20230720《深度探索C++对象模型》,虽然是面向中高级的,感觉自己也能get到了,虽然翻译得有点别扭,也算慢慢习惯了,倒不是想深究编译器的实现,主要是看下OO对应的对象模型

STL

  • 在没有《C++泛型STL原理和应用》之前,大部分书都是讲如何用STL,这本书的好处在于承上启下,对接了C++传统OO的部分,讲了一些STL的原理(6大组件),也带到了C++2.0的知识,我18年左右手写了笔记,也在blog上写了点章节笔记(但当时吧,没有死磕,导致遗留了不少知识点没有真正掌握,也没有多多复习),搞得水平是个半吊子,今年花了半个月,把全书笔记给整理了起来
  • 有了这个基础后,之前有点懵圈的《STL源码剖析》,现在也能看懂了,当然代码层面还没看啊
  • 有了上面的基础后,可以去刷些leetcode题,去看下cppreference上的一些关键字,算法

设计模式DP

  • 之前一直没有get到DP的点在哪里,现在发现,其实核心在于OO学好,面向对象实在太重要了,把OO的知识点+C++的语法,就是一个模式
  • 之前书也看了几本,图书馆借的时候看了下,发现都花里胡哨,忘记学习的根因了,开始把DP的知识点建立起来,再去比较各种模式的优劣,以及语言的差异,2023年07忽然就通了,直接就看《大话设计模式》,看懂UML图,通过例子去领会作者的写这个模式的意图,用C++代码去实现这个模式,在这个过程中,不断记忆与理解
  • 之前学ds也好,学dp也好,我脑子里都会有个疑问“学这个有什么用”,年初搞定ds后,现在不问了,现在已经把安当作基石了,有了这个基础后,再看其它东西就好理解一些

最后

  • 千万不要学我,不会的地方就喜欢抄下来(觉得以后会看,看个P啊,现有的书,有上下文的地方都不看,抄下来更看不懂了),代码也不要抄,多去读代码,多去写代码(书有github的,直接把github的代码导入到自己的code目录中,自己有意识的思考着在IDE上写可以,不要去逐行抄代码,一点意义没有,完全浪费时间
  • 我以前吧,花了太多时间去读闲书(不是说闲书不好,而是对我用处不大),2023年转变了(之前也读技术),但没现在彻底
  • 这次把这几本书串起来,不仅仅是知识层面,更重要的信心和方法论的建立,以及平衡到了时间(每天平均投2个cubi,事多就复习,事少就死磕一个知识点),这样也便于坚持下去
  • 很多知识也就面试的时候问问,review人家代码的时候用过,定位问题时用到,出个优化方案时用到,一般写个feature不太用得到(一来呢可能太卷了,二来呢,如果总是这么想,怎么挑大梁,拿绩效A)

下一步展望

  • 基础的2本《从零开始学C++程序设计》、《C++泛型STL原理和应用》再好好看看,多复习复习
  • 在练的《大话设计模式》,2023年7月能整掉前15章的代码,2023年8月全书整完;在读的《深度探索C++对象模型》,趁着还热乎,还有10天,把这书建立起知识脉络来
  • 2023年8月继续复习《深度探索C++对象模型》、《effective C++》中的各个item,8月争取投点精力《STL源码剖析》上,主要是从github上找个源码

相关文章

  • C++11特性-概览

    C++11(也称C++2.0、Modern C++) 是继C++98(C++1.0) 之后的第二个国际标准规格,其...

  • 1.0 STL基础

    1.1 C++实现软件的重用,体现在 (1)面向对象的思想:继承和多态,标准类库; (2)泛型程序设计的思想:模板...

  • C++STL内存分配

    STL文件的包含关系: SGI STL 设计了双层级配置器。第一层配置器直接使用malloc() 和 free()...

  • C++ 设计模式 —— 16.迭代器模式

    迭代器模式:一种行为型设计模式 应用场景:刚学习C++STL容器的时候,自然也学习了迭代器。当时很不懂为什么指针可...

  • STL内存管理详细分析

    STL中内存管理非常精妙,本文以SGI STL为例,分析其内存管理的设计思路,也是对侯捷老师的《STL源码剖析》中...

  • C++标准库结构与使用

    本文预览: 标准库和STL STL的六大组件 STL容器分类 STL容器使用 标准库和STL ** 我们在写C++...

  • 【Effective STL(6)】仿函数、仿函数类、函数等

    38 把仿函数类设计为用于值传递 STL函数对象在函数指针之后成型,因此STL习惯传给函数和从函数返回时,函数对象...

  • C++ STL是什么

    STL 组件主要包括容器,迭代器、算法和仿函数。STL 基本结构和 STL 组件对应。 STL 主要由迭代器、算法...

  • STL(1至6条)

    标签(空格分隔): STL 运用STL,可以充分利用该库的设计,让我为简单而直接的问题设计出简单而直接的解决方案,...

  • 迭代器 及 容器 设计 : 仿 STL list 设计1个简单

    1 iterator 2 iterator 设计 1. STL 设计思维 对 containers and al...

网友评论

      本文标题:C++1.0、STL和设计模式的学习曲线1.0

      本文链接:https://www.haomeiwen.com/subject/vwuaudtx.html