链接:https://www.zhihu.com/question/32087709

编辑:深度学习与计算机视觉

声明:仅做学术分享,侵删

即将读研,虽然考的是本专业(GIS),但是研究生读的专业在计算机学院,要求所有研究生都要会编程。

本科期间学过C++,但是基本忘的差不多。现在暑假已经被要求到学院搞项目,但是因为对编程只有概念上的认识,所以现在都是在自学C++。

这几天开始从头看C++ primer,但是因为基础实在薄弱,很多内容看很久都看不懂,上网查资料也是一片模糊。看了几天之后,觉得我学习的方法有问题(我是每天都在练习他的习题)。

我知道学习程序语言要多敲代码,但是这个敲代码不知道从哪里入手,看书也不知道哪些是重点,哪些现在可以不看的。完全没有一个详细的规划,很乱。求大神给些意见!

相信也有其他小伙伴有类似疑惑,特此摘录了一些小伙伴的回答,以供参考!

作者:dawnmist
https://www.zhihu.com/question/32087709/answer/54936403

个人经验,C++ primer 第一次可以跳着看。关键是要尽快用起来,在使用中熟练,而不是在细节中迷失。

以C++ Primer第五版为例,第一遍读的时候:

Part1也就是前七章,除了6.6,6.7节,都要通读。尤其是第三章初步介绍了vector和string,简直就是新手福音,搞定这两个容器就能写一些简单的程序。
Part2基本就是数据结构和算法,如果有基础读起来很轻松。

9,11两章介绍的容器,以及12.1节的智能指针要通读。多用智能指针和容器,远离segment fault. 第10章里的泛型算法可以慢慢读,读完以后可以写出高逼格的函数式风格C++。12.2节讲了怎么用new和delete分配空间,题主作为新手,知道这种写法就行,写程序时尽量用容器代替原始数组,尤其是代码里最好不要有delete。
Part3是块硬骨头,标题就是Tools for Class Authors. 作为一个"class user",有些部分第一次是可以略过的。
13章很重要,要细读。初始化,复制,赋值,右值引用是C++里很微妙很重要的部分,别的语言对于这些概念很少有区分得这么细的。这一章不但要精读,还要完全掌握。
14章的操作符重载第一次可以观其大略;14.9节第一次可以跳过。
15章讲OOP,重要性不言而喻。如果之前一点概念都没有,学起来会觉得比较抽象。网上关于OOP有很多通俗有趣的文章,可以一起看看。
16章讲泛型编程,第一次读16.1节,掌握最基本的函数模板和类模板就行了。
Part4就更高档了,很多内容第一次就算啃下来,长久不用又忘了。第一次读推荐把18.2节读懂,命名空间简单易用效果好。别的内容可以观其大略,用时再看。17.1节的tuple是个有趣的东东,可以读一读。17.3节的正则表达式和17.4节的随机数也许有用,也可以读一读。如果需要读写文件,要读一下17.5.2节的raw I/O和17.5.3节的random I/O。

最后给题主的建议是,写C++,要尽量避免C的写法。用static_cast而不是括号转换符;用vector而不是C里面的数组;用string而不是char *;用智能指针而不是原始指针。当然I/O是个例外,printf()还是比cout好用的;转换数字和字符串时sprintf()也比stringstream快

作者:vczh
https://www.zhihu.com/question/32087709/answer/977501204

c++primer就是用来给你学习语法的,然后你就找点什么来做。一般我建议学到指针操作字符串之后,就着手复刻windows记事本。

学编程是一件周期长达10年的事情,早期根本不需要在乎学习效率,只要不断的沉迷于开发软件就可以了,知识自己就回来了。

只有知道为什么野鸡套路不行,你学习正规套路才会掌握得更好。适当走点弯路,提高学习质量

作者:匿名用户
https://www.zhihu.com/question/32087709/answer/55497335

对于工程性、技术性的知识,没有实践的感性认识作为基础,读也读不懂。那么问题来了,没有实践就没法读懂,没法读懂自然也就没法去做正确且高质量的实践,问题似乎进入了一个死循环。

学习东西最怕不知道学的东西有什么用处,只要是这样,多半会半途而废。而个问题的深层次原因就是上面说的。

要想打破这个死循环,你唯一能做的就是调整心态,然后读一点就实践一点,一点一点的往前挪。这是学习任何新知识所必需的“痛苦”经历。在这里我给你几点建议,帮助你尽可能的减轻“痛苦”,让你起码能有一个开始:

1.第一遍要通读,而且可以不求甚解,但必须读的有速度,不要在不懂的地方过多的停留,不要试图在第一遍的时候就搞懂所有细节。假如读到后面需要前面的知识,但是又忘记了,可回头看,也可不回看。很多人想用c++ primer学习c++,但是第一遍都没读完就放弃了。

2.接上条。读第一遍的目的是让你知道c++都有什么东西,先混个脸熟,等日后见到一些比较高级的特性心里不会发慌。

3.调整心态,不要急于求成,除非你已经拥有了丰富的编程经验,否则一个假期不可能到达熟练掌握c++的程度。要认清这一点,遇到挫折了不要怀疑自己,大家都是这么过来的。

4.c++不是一门可以边学边干的语言,里面坑很多,要是一知半解就去用,很可能掉坑里了还不知道。

5.如果觉得c++ primer太厚,可以读读作者写的另外一本:Essential C++ (豆瓣)。

6.关于书上的习题,第一遍看的时候可以不做。原因是做习题就会陷入到细节中,学任何东西过早的陷入细节都不是好事情。凡是过早陷入细节的,很少有能坚持到最后的。

作者:dabbler0606
https://www.zhihu.com/question/32087709/answer/54871907

首先,看c++primer
一定要看第5版

1.从头开始看,别跳
c++11穿插在书的每一个角落,跳到后面你可能看到新标准又返回来看.
而且这种经典书看几遍每次也会有新收获

2.课后习题一定要做
课后习题才是查露补缺.一定要做,做题和不做差别太大了,而且课后很多经典题

3.最好记笔记,这种大部头不能保证所有都常用,所以有些会忘的很快..记了笔记可以快速记忆起来自己看的

以上是我看完c++primer第4版没做习题和第5版做完课后习题的感受
这么做比较费时间,但是c++语法层应该没问题了。
习题答案github有很多

作者:Godbird
https://www.zhihu.com/question/32087709/answer/147704354

老实说,我觉得如果你真的一点编程经验都没有完全从零开始的话,C++ Primer的Primer一词对你来说可能并不适用。这本书其实还是有一些门槛的,只是相对于其它比如Inside C++Object Model,Effective C++,Exceptional C++甚至The C++ Programming Language这些书来说门槛要低那么一点。

所以,如果你是科班出身,大可以不紧不慢的在大学里学完C++的课程再来看这本书。可以加深你对C++的认识,如果你直接就入门这本书学编程,其实我并不推荐。

另外这本书真的很实用,很多技巧是工作中马上就能用到的,所以无论你做什么行业,只要用C++开发程序,这本书我认为无论如何都是值得一看的。

作者:南边的风
https://www.zhihu.com/question/32087709/answer/54907249

我C++ Primer Plus和C++ Primer 都看过,我还是比较喜欢C++ Primer Plus的风格,可能由于是从C Primer Plus看过来的,网上有每个实例的完整代码,边调试边看书会效果比较好。

C++ Primer相对 C++ Primer Plus要抽象一点,也更深一点,但是缺少完整的实例工程,学起来不是很好,个人建议先看C++ Primer Plus,把每个实例调试一遍,实践出来的效果更好,C++ Primer就当做是工具书吧,有疑惑的时候再翻翻。C++ 过于庞大,一定要有实际的工程代码才能理解的比较好。例如opencv是C++写的计算机视觉库,拿几个工程来练练手,看opencv函数的实现细节,几个工程下来,C++会进步不少的!

作者:胖子许木木
https://www.zhihu.com/question/32087709/answer/980134433

编程是理论+实践相结合的活,二者缺一不可

《C++ Primer》里面没有非常高深的理论,全是基本语法,以普通人的智商学起来不难,半年怎么也够了。但为什么很多人学完《C++ Primer》还是什么都做不了。

真的是C++的锅么?不是的,是因为C++涉及的应用面太广,例如:

  • RPC网络开发 (grpc, Nginx, baidu-rpc)

  • 数据库开发 (LevelDB, RocksDB, MySQL, MongoDB, Redis)

  • 多媒体开发 (FFmpeg, imageMagick)

  • 人工智能开发 (Tensorflow, Caffe2, MXNet, PaddlePaddle)

  • 编译或解释器开发 (V8, HHVM)

  • 游戏或渲染引擎开发 (Webkit引擎)

  • 桌面开发(GUI)

  • 驱动设备开发

上面列出来的每一个方向都涉及到两项基础知识的储备

  • 操作系统

  • 数据结构和算法

这两项知识有必读的几本书:

  • 《深入理解计算机系统》

  • 《现代操作系统》

  • 《UNIX环境高级编程》

  • 《算法》

  • 《算法导论》

以上均是理论,平均每本书都是600页+, 五本3000页,加上《C++ Primer》3600页绰绰有余。

怎么实践这两项基本知识呢:

  • 数据结构和算法:边看书边刷LeetCode,还能锻炼C++基本语法,额外多想一下是否线程安全?

  • 操作系统方面:找准某个方向,先熟悉开源软件如何用,再看看有哪些功能,根据功能造轮子。

怎么造轮子呢,首先看下企业内部简化版研发流程:

需求提出----->系统设计-----> 开发-----> 测试----->部署

对应自己造轮子的时候:

  • 系统设计可能会缺少,因为大多数初学者没什么设计能力,能实现就不错了

  • 部署会缺少,轮子嘛,肯定不是非常完备,自己玩玩就行了

  • 测试会缺少一部分,能把单测写了就不错了

那最后只剩下需求提出和研发:

需求提出是需要细化的,空想是想不出来的?想不出来需求,就得先把开源软件用熟悉了,看看有哪些功能,记下来,拆解开,一旦功能拆解清楚,研发其实是相对简单了。

总之学习C++需要理论和实践相辅相成。3600页的理论+实践,没两年下不来,何况这些书不是一遍能过,至少得3遍,需做好长期准备。

☆ END ☆

如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 mthler」,每日朋友圈更新一篇高质量博文。

扫描二维码添加小编↓

如何正确通过 C++ Primer 学习 C++?相关推荐

  1. 如何正确的通过 C++ Primer 学习 C++?(转自知乎)

    作者:dawnmist 链接:https://www.zhihu.com/question/32087709/answer/54936403 来源:知乎 著作权归作者所有,转载请联系作者获得授权. 个 ...

  2. C++ Primer 学习笔记(第四章:表达式)

    2019独角兽企业重金招聘Python工程师标准>>> ##C++ Primer 学习笔记(第四章:表达式) [TOC] ###4.1 基础 左值和右值: 当一个对象被用作右值的时候 ...

  3. 【C++ Primer 学习笔记】: 容器和算法之【泛型算法】

    本系列博客主要是在学习 C++ Primer 时的一些总结和笔记. [C++ Primer 学习笔记]: 容器和算法之[泛型算法] 本文地址:http://blog.csdn.net/shanglia ...

  4. FAQ7: 如何正确的对待汇编学习和反汇编学习?

    FAQ7: 如何正确的对待汇编学习和反汇编学习? 答: 首先要学会正确的学习方式.       学习汇编的正确方式: 1> 建议以 王爽汇编这本教材 为初级入门书籍                ...

  5. C++ Primer 学习笔记 第十章 泛型算法

    C++ Primer 学习笔记 第十章 泛型算法 336 find函数 #include <iostream> #include <vector> #include <s ...

  6. c++primer学习笔记

    c++ primer 5e学习笔记 第1章 1.标准库 类型和函数的集合,每个c++编译器都必须支持. 2.()运算符:调用运算符.跟随在函数名后,起调用函数的作用 第2章 1.p32:char在一些 ...

  7. C++ Primer 学习笔记 第一,二章

    2021年4月4日,我终于开始学习C++啦,下面的笔记会记录着我的心酸的学习历程,每个标题会记录着下面代码在<C++中文版 Primer>中的页码 P6 实现两数之和 # include ...

  8. 台式电脑键盘字母乱了_键盘侠的育儿经利用键盘引导学龄前儿童正确使用电脑、学习英文字母和拼音...

    点击上方"总想做自己"关注我 可以订阅哦 一点资讯邀约作者:方游 专注探讨个人成长与正向激励的话题, 有干货,不再错过,快来点击关注吧! 微信公众号:apple_seeworld ...

  9. 学习类APP如何正确激发孩子的学习兴趣和提升数学思维能力?

    我们都知道,学习知识最需要的就是好奇和兴趣,不好奇.没兴趣,就更没有动力去学习.为了学习而被迫学习,永远不如为了想要学习而学习的效果好.如果家长要想孩子有一个好的学习好,"培养孩子的学习兴趣 ...

最新文章

  1. windows nodejs mysql_windows server 安装 mysql + nondejs连接mysql
  2. fcode-页面九宫格自动锁屏jquery插件
  3. css层叠上下文和层叠顺序
  4. matlab and操作,系统建模 | Control Tutorials for Matlab and Simulink
  5. 死磕 Java 8 的日期处理
  6. 2021谷饶中学高考成绩查询,高考成绩
  7. java中no1_【Java】-- 网络编程のNo.1
  8. Python基础 ( 十 ) —— 面向对象(多态、封装、反射、动态导入)
  9. MDT 2013 从入门到精通之自动化部署WinSer 2012 R2
  10. CentOS安装NVidia驱动提示kernel source path问题
  11. JAVA 异或校验byte数组
  12. Xib中设置view的BorderColor 及 ShadowColor
  13. u盘安装centos8黑屏_u盘centos7 安装 黑屏苹果电脑怎么安装win7系统还原
  14. java 宝箱概率问题
  15. vim菜单栏不正常显示以及隐藏菜单栏
  16. matlab 神经网络train均方误差,MATLAB搭建bp神经网络的误差特别大,但R2的值也大,求解帮我看看我的网络哪里出问题了...
  17. 耳机串音问题解决(crosstalk)
  18. 菜鸡学Unity 之 了解 Unity 中的五个视图窗口
  19. C语言:输入英文句子,将所有单词首字符转换成大写后输出
  20. 笔记②:牛客校招冲刺集训营---C++工程师(面向对象(友元、运算符重载、继承、多态) -- 内存管理 -- 名称空间、模板(类模板/函数模板) -- STL)

热门文章

  1. 第七篇 亚龙236 led 16*32点阵显示显示汉字
  2. Flas-SQLAchemy笔记
  3. 档案管理html,人员档案管理.html
  4. html安装网卡驱动,网卡驱动,详细教您网卡驱动怎么安装
  5. cmd命令提示符大全(2)
  6. 小数点化分数的过程_《分数和小数的互化》的教案
  7. 上海市高等学校计算机一级成绩查询,上海计算机一级考试成绩查询入口
  8. 软件测试--基础知识1--测试简介、软件质量等
  9. 19、猿人学第四题:雪碧图、样式干扰【Post/Js逆向笔记】
  10. pytorch构建deeplabv3+