花了 6 个月时间认真读了 c primer plus 第 6 版 中文版,想继续获得更多的 C++的知识,同时希望在算法上有所提升,接下来该怎样深入? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MikeFish
V2EX    C

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

  •  
  •   MikeFish 2015-09-04 15:46:07 +08:00 4131 次点击
    这是一个创建于 3744 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 当作库来看
    cz208209
        10
    cz208209  
       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++反思 这篇文章
    v2gba
        51
    v2gba  
       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     Solana     920 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 21:32 PVG 05:32 LAX 13:32 JFK 16:32
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86