V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MikeFish
V2EX  ›  C

花了 6 个月时间认真读了 c primer plus 第 6 版 中文版,想继续获得更多的 C++的知识,同时希望在算法上有所提升,接下来该怎样深入?

  •  
  •   MikeFish · 2015-09-04 15:46:07 +08:00 · 3395 次点击
    这是一个创建于 3160 天前的主题,其中的信息可能已经有所发展或是发生改变。
    63 条回复    2015-09-06 12:28:08 +08:00
    guoqiao
        1
    guoqiao  
       2015-09-04 15:54:31 +08:00   ❤️ 1
    接下来开始学习 Python 或 Go 或 C# 或 Java, 或任何其它语言, 趁你还没深入, 回头还来得及.
    aszxqw
        2
    aszxqw  
       2015-09-04 15:58:25 +08:00
    @guoqiao 哈哈哈。机智!
    dorentus
        3
    dorentus  
       2015-09-04 16:00:05 +08:00 via iPhone
    《 STL 源码剖析》
    skydiver
        4
    skydiver  
       2015-09-04 16:01:40 +08:00
    C primer plus 是 C 的书,想学 C++应该看 C++ Primer
    C 和 C++是不同的语言
    MikeFish
        5
    MikeFish  
    OP
       2015-09-04 16:04:09 +08:00
    @skydiver 不好意思,打错了字了,是 C++
    Dannytmp
        6
    Dannytmp  
       2015-09-04 16:04:26 +08:00
    C++海无涯,回头是岸
    BikeMan
        7
    BikeMan  
       2015-09-04 16:11:41 +08:00
    接下来应该把英文版的 C++ primer plus 的给啃透. 我敢保证你漏掉了很多核心知识.
    skydiver
        8
    skydiver  
       2015-09-04 16:15:48 +08:00
    @MikeFish
    @BikeMan
    C++ Primer 才是经典的书, C++ Primer Plus 只是附名之作。
    MikeFish
        9
    MikeFish  
    OP
       2015-09-04 16:18:22 +08:00
    @skydiver 可是好多人都说 C++ Primer 当作库来看
    laucie
        10
    laucie  
       2015-09-04 16:22:47 +08:00
    @guoqiao 机智
    zerh925
        11
    zerh925  
       2015-09-04 16:24:33 +08:00   ❤️ 2
    @skydiver +1
    我也好奇为什么看 C++ Primer Plus
    C++ Primer 才是应该看的吧

    而且你在 V2EX 讨论 C++,基本上就是楼上那调调。
    这里前端为王,移动为王。
    theFool
        12
    theFool  
       2015-09-04 16:27:36 +08:00
    c++ primer
    c++ programming language
    算法导论
    stl
    boost
    做项目
    防治颈椎病
    shakespark
        13
    shakespark  
       2015-09-04 16:41:10 +08:00
    现在搞 c/c++的人越来越难混
    BikeMan
        14
    BikeMan  
       2015-09-04 16:42:02 +08:00
    @skydiver 题主是要学 C++, 你让人读 C primer plus. 你丫瞎扯蛋! C 跟 C++完全是不一样的语言.
    MikeFish
        15
    MikeFish  
    OP
       2015-09-04 16:42:49 +08:00
    @theFool 对,现在才刚刚上大二,劲椎已经很痛了
    acros
        16
    acros  
       2015-09-04 16:43:44 +08:00
    深入研究 C++还是算法优先?
    算法的话 C++基础会用就好了(差不多就是当带类的 C 用的),没见做算法题用到多高深的技巧。

    精研 C++的话,直接研究 STL 、 Boost 地步,我想会吃不消的,先去看看 Effective C++,看不懂就先做实践。
    onemoo
        17
    onemoo  
       2015-09-04 16:51:45 +08:00
    读了 C 语言的书,想继续获得 C++的知识?!
    你的意思是想再去学 C++吗? 这样的话请读《 C++ primer 》 **注意:书名中没有"plus",带 plus 的那本不如这本**
    算法是很大的一块,与用什么语言关系不是很大,你熟悉不同语言的特性后都可以自己写算法的实现。书也有很多,肯定会有人提《算法导论》的...
    skydiver
        18
    skydiver  
       2015-09-04 16:52:47 +08:00
    @BikeMan 你看清楚了再喷。题主都说了,题目写错了。
    skydiver
        19
    skydiver  
       2015-09-04 16:53:16 +08:00
    @onemoo 题主说了,题目写错了
    BikeMan
        20
    BikeMan  
       2015-09-04 17:00:24 +08:00
    @skydiver 哇喔. 你晓得题目写错了, 那就是在说 C++的嘛. 你脑子转不弯啦.
    onemoo
        21
    onemoo  
       2015-09-04 17:00:29 +08:00
    @MikeFish 老版本的《 C++ primer 》确实像工具书。我觉得新版(第 5 版)的编排还不错,挺适合新人入门的,不过要耐下性子从头看到尾,它把继承和多态等内容放到了后面,优先介绍的是常用的库。感觉这样的安排很好, stl 确实是 C++的重点。个人不太喜欢那种把 C++当带类的 C 、罗列一堆语言特性的书。那种书看完后都不知道要怎样运用 C++。

    P.S. 《 the C++ programming language 》才是工具书。
    WeberXie
        22
    WeberXie  
       2015-09-04 17:00:45 +08:00
    @dorentus 同意《 STL 源码剖析》
    onemoo
        23
    onemoo  
       2015-09-04 17:03:27 +08:00
    @skydiver
    @BikeMan
    是这样的,我打下刚才回复的第一个字时,此帖只有两个回复。然后就离开了,等我回来点"回复"时,就到 17L 了...
    skydiver
        24
    skydiver  
       2015-09-04 17:04:20 +08:00
    @BikeMan 看看题主几楼回复的,再看看题主回复之后我一直在说 C++,是你脑子转不过弯吧。
    BikeMan
        25
    BikeMan  
       2015-09-04 17:10:18 +08:00   ❤️ 1
    @skydiver 你牛逼, 先于题主留言了, 还 at 我们重复你那句, 把我们脑子给弄弯了! 在下拜服! 题主, 赶紧赔我吵架费!
    weizn
        26
    weizn  
       2015-09-04 17:22:08 +08:00
    《算法精解: C 语言描述》
    严蔚敏的《数据结构及算法( C 语言版)》
    《算法导论》这个为辅,因为直接看也看不懂。
    zerh925
        27
    zerh925  
       2015-09-04 17:54:09 +08:00 via iPhone
    @BikeMan 你从头看下,是你弄错了
    Ellison
        28
    Ellison  
       2015-09-04 18:19:59 +08:00
    @BikeMan 然而并不能指定 @某一层,插件的话是默认读最近的一条
    oska874
        29
    oska874  
       2015-09-04 18:25:35 +08:00
    @BikeMan 真是你搞混了。
    MikeFish
        30
    MikeFish  
    OP
       2015-09-04 18:30:06 +08:00
    可以不争吵吗
    chchwy
        31
    chchwy  
       2015-09-04 18:57:23 +08:00
    請認明作者 Stanley B. Lippman, 這家伙寫的那本才是經典.
    FUCKEX
        32
    FUCKEX  
       2015-09-04 19:41:44 +08:00
    C++博大精深

    楼主别被忽悠 看什么源码剖析。。。。那是无底洞


    C++只用来解决问题的 不是用来研究的。。。。


    推荐熟悉 STL 然后 Boost



    然后在 Linux 好好写代码吧
    lsmgeb89
        33
    lsmgeb89  
       2015-09-04 19:49:17 +08:00
    把你要熟悉的算法仿照 STL 的方法实现一遍。
    Smirnoff
        34
    Smirnoff  
       2015-09-04 19:52:06 +08:00
    @skydiver 你错了 c++ primer 适合查询 c++ primer plus 才是很适合学习
    assassinpig
        35
    assassinpig  
       2015-09-04 20:10:09 +08:00
    标库
    mosir
        36
    mosir  
       2015-09-04 20:52:36 +08:00
    同意 FUCKEX 的,你看错书了,应该是 c++ primer ,然后熟悉 STL ,然后 BOOST ,这才是 C++正确的方向
    cxshun
        37
    cxshun  
       2015-09-04 20:59:24 +08:00
    @BikeMan 还真是你弄错了,从头开始看看。
    楼主应该给个重点,是主攻算法还是主攻 C++,这两个完全不同的东西,主攻算法就可以看《算法》,不是《算法导论》啊,或者看国人的《啊哈!算法》,好像评价不错。
    如果主攻 C++,我不是搞 C++的,这就要看牛人给建议了。
    DarkDucky
        38
    DarkDucky  
       2015-09-04 21:00:57 +08:00
    6 个月时间太长了,顶多只需要看 1 个月的书就可以,然后用 5 个月的时间敲代码。一般的方向是 C++ Primer 、 Effective C++、 More Effective C++、 STL 源码解析、设计模式。
    Neveroldmilk
        39
    Neveroldmilk  
       2015-09-04 21:06:07 +08:00
    直接 Boost 也可以,剩下就是深入了解 Boost 里面使用到的各种高级技术,比如 Vector 和模板等。 C++总会有人去学去用的,死不了。
    feelapi
        40
    feelapi  
       2015-09-04 21:22:02 +08:00
    先写 10 万行的代码再说吧,要不然满脑袋教条,没什么卵用。
    rogerchen
        41
    rogerchen  
       2015-09-04 21:27:38 +08:00
    楼主先想明白为什么要执着于 C++, C++是学之者生,用之者死。如果想找工作, C++不是上选
    harttle
        42
    harttle  
       2015-09-04 22:00:06 +08:00
    推荐 Effective C++,最近我也在重读这本书,第二遍了。每次都有新的感悟,推荐!
    我还在为每一节写一篇博客呢,你也可以去大致看看 Effective C++里的内容: http://harttle.com
    canautumn
        43
    canautumn  
       2015-09-04 22:11:39 +08:00
    忘掉 C++ Primer Plus ,重新看 C++ Primer 。两本不是差的一点半点。
    tobyxdd
        44
    tobyxdd  
       2015-09-04 22:16:41 +08:00
    V2 这一堆做 Web 的井蛙并不适合 LZ 深入讨论 C++
    zsj950618
        45
    zsj950618  
       2015-09-04 22:22:24 +08:00   ❤️ 1
    所以你看的到底是 c primer plus 还是 c ++ primer plus 还是 c++ primer

    c++入门请看不带 plus 那本, c++ primer http://book.douban.com/subject/25708312/
    然后看这本 深度探索 C++对象模型 http://book.douban.com/subject/1091086/
    harry890829
        46
    harry890829  
       2015-09-04 22:54:20 +08:00
    他们好多东西感觉太书本化了,作为一个蛋疼的 c/c++程序员……在开发时,除非有很明确的要求,否则一般都是混用,而且开始写项目!开始写项目!开始写项目!我新招的一个小弟,自以为屌屌的,也是看过一大堆书啊,什么的,后来深聊,他没有写过一个上千行的项目,他的小程序,还止步于 200-300 行左右……写个感兴趣的完整的项目吧,然后不断完善
    noli
        47
    noli  
       2015-09-05 02:06:55 +08:00
    @MikeFish C++ 坑很深,确定要继续趟?

    C++ Primer Plus 已经看完了的话,相信你也知道什么叫做数据结构?
    实现一个多线程环境下的无锁的消息队列吧,用 C++11 做这个的难度已经很低了。但是能够同时满足你算法和学习 C++的两个目的。
    baozijun
        48
    baozijun  
       2015-09-05 02:11:19 +08:00
    写个简易版的 QQ 吧,顺便把 window 核心编程看了,保证能学到很多
    hjc4869
        49
    hjc4869  
       2015-09-05 03:39:18 +08:00 via iPhone
    好好学习和练习 C/C++,不要把时间浪费在折腾 Linux 上。🌝
    ilotuo
        50
    ilotuo  
       2015-09-05 03:48:08 +08:00 via Android
    lz 建议你入坑前可以搜一下 c++反思 这篇文章
    MrGba2z
        51
    MrGba2z  
       2015-09-05 04:05:14 +08:00
    即便我不搞前端不搞移动 我也想说回头是岸
    MikeFish
        52
    MikeFish  
    OP
       2015-09-05 07:33:30 +08:00
    谢谢大家的回复,因为是要使用 C++,但是个人有点那种感觉,就是不知道为什么这样做之后,就觉得很难受的感觉
    linux40
        53
    linux40  
       2015-09-05 08:37:56 +08:00 via Android
    c++ primer 能当库来看。。。。
    那上面连标准有哪些库都讲不全。
    linux40
        54
    linux40  
       2015-09-05 08:39:07 +08:00 via Android
    @zsj950618 跨度是不是太大了,两本书之间应该还有路要走吧。。。
    luago
        55
    luago  
       2015-09-05 11:48:32 +08:00
    人的精力有限,先建立知识体系。
    junzki
        56
    junzki  
       2015-09-05 12:21:19 +08:00
    Unix 编程相关,或者是 Qt ,应该是不错的方法。个人觉得应该多做一些实践。
    yh7gdiaYW
        57
    yh7gdiaYW  
       2015-09-05 14:04:06 +08:00
    冲着找工作的话,赶紧逃离 C++
    爱好的话,找个用到算法的项目练练手?
    Smirnoff
        58
    Smirnoff  
       2015-09-05 14:12:38 +08:00   ❤️ 1
    这里的都是 拿来主义,前端主义,并不适合讨论 C++ 这样的艺术 我相信大部分人 的基础 都不如 看过 c++ primer plus 的楼主,请移步!!!!!
    至于说 c++ primer 比 c++ primer lius 适合入门的人
    问你们一句,这两本著作你们看过哪本?
    rundis
        59
    rundis  
       2015-09-05 19:34:59 +08:00
    6 个月有点慢,应该是 lz 比较忙

    既然如此就不推荐太多了,我就给书单好了,其他的 造轮子、看源码、找实习也都很重要!
    -------
    cpp :
    c++ primer :还是看下吧,很著名的 cpp 的书,全
    effective c++
    exceptional c++
    stl 源码剖析

    算法&数据结构:
    算法导论:实在看不懂就算了
    数据结构与算法分析
    -------

    ps :我没学过 cpp ,不要太过于纠结我的评论。。。
    MikeFish
        60
    MikeFish  
    OP
       2015-09-05 21:32:13 +08:00
    @rundis 每天三节课,还要做作业
    neilp
        61
    neilp  
       2015-09-05 21:39:45 +08:00
    不要期待像武侠小说里一样, 掉到悬崖下面捡到一本秘籍, 读一遍就能一夜之间满级.

    计算机行业, 说到底是技术工种. 技术工种的的要点在于熟练, 而不仅仅是读过几本说明书或者使用手册.

    基本上,楼上列出的都是 类似 使用说明和用户手册之类的东西. 读他们很重要, 但是要想在 c++领域提高,更重要的是要多写代码, 熟练.

    了解一些编译方面的原理, 了解 c++到底是如何在各个平台上工作的.
    了解 VC, Gnu C 以及 clang 对标准 c++ 的支持程度, 以及在各个平台上的差异和坑.
    了解 LLVM 优化, 了解 valgrind 查错.

    等等,

    c++ 领域太庞杂了, 想要把 c++ 用起来, 用好, 需要更多的是实践和坑.

    花一年时间读一遍英文语法, 也不可能学好英语. 各种语法规则张口就来, so what? 还是哑巴英语.

    c++ 也是语言而已, 与基本的文法规则比起来, 更重要的是实际应用. 实际中, 很多都是不按规则出牌的.


    多练, 多谢, 多踩坑.
    Shy07
        62
    Shy07  
       2015-09-05 23:05:32 +08:00 via iPhone
    去 leetcode 刷题,遇到有困难的,不要搜答案,直接找相关的书籍补充知识,全部靠自己做完,指针算法逻辑也就基本 OK 了
    剩下的就是 cpp 花样编程了,想全部精通是不可能的,宏对象过程泛型函数式找一种喜欢的,造个小轮子练练手
    jejer
        63
    jejer  
       2015-09-06 12:28:08 +08:00 via Android
    研究编译器
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   993 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 19:20 · PVG 03:20 · LAX 12:20 · JFK 15:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.