Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 787|回复: 0

[默认分类] The Definitive C++ Book Guide and List

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-5-16 20:46:47 | 显示全部楼层 |阅读模式
    This question attempts to collect the few pearls among the dozens of bad C++ books that are published every year.
    这个问题试图收集每年出版的几十本坏的c++书籍中的几颗珍珠。
    Unlike many other programming languages, which are often picked up on the go from tutorials found on the Internet, few are able to quickly pick up C++ without studying a well-written C++ book. It is way too big and complex for doing this. In fact, it is so big and complex, that there are very many very bad C++ books out there. And we are not talking about bad style, but things like sporting glaringly obvious factual errors and promoting abysmally bad programming styles.
    不同于许多其他的编程语言,这些编程语言通常是在网上找到的教程中找到的,很少有人能够在不学习编写好的c++书籍的情况下快速地获取c++语言。这样做太大太复杂了。事实上,它又大又复杂,有很多非常糟糕的c++书籍。我们并不是在说糟糕的风格,而是像体育运动那样明显的事实错误和糟糕的编程风格。
    Please edit the accepted answer to provide quality books and an approximate skill level — preferably after discussing your addition in the C++ chat room. (The regulars might mercilessly undo your work if they disagree with a recommendation.) Add a short blurb/description about each book that you have personally read/benefited from. Feel free to debate quality, headings, etc. Books that meet the criteria will be added to the list. Books that have reviews by the Association of C and C++ Users (ACCU) have links to the review.
    请编辑已接受的答案,提供高质量的书籍和近似的技能水平——最好在讨论你在c++聊天室的添加之后。(如果他们不同意你的建议,他们可能会毫不留情地撤销你的工作。)给你读过的每一本书加上一个简短的介绍/描述。可以自由讨论质量、标题等。符合标准的书籍将被添加到列表中。由C和c++用户协会(ACCU)进行评论的书籍与审查有联系。
    [sub]*Note: FAQs and other resources can be found in the C++ tag info and under c++-faq. [/sub]
    *注:在c++标签信息和c++-faq中可以找到FAQs和其他资源。1 个解决方案#1
    3849  Beginner
    Introductory, no previous programming experience

    C++ Primer * (Stanley Lippman, Josée Lajoie, and Barbara E. Moo) (updated for C++11) Coming at 1k pages, this is a very thorough introduction into C++ that covers just about everything in the language in a very accessible format and in great detail. The fifth edition (released August 16, 2012) covers C++11. [Review] c++入门* (Stanley Lippman, Josee Lajoie,和Barbara E. Moo)(更新为c++ 11),在1k页,这是对c++的一个非常全面的介绍,它涵盖了语言中的所有内容,非常容易理解,而且非常详细。第五版(2012年8月16日发布)涵盖了c++ 11。(审查)
    Programming: Principles and Practice Using C++ (Bjarne Stroustrup) (updated for C++11/C++14) An introduction to programming using C++ by the creator of the language. A good read, that assumes no previous programming experience, but is not only for beginners.编程:使用c++ (Bjarne Stroustrup)的原理和实践(更新为c++ 11/ c++ 14),介绍使用c++语言编写的编程。一个很好的阅读,没有以前的编程经验,但不仅仅是初学者。

    [sub] * Not to be confused with C++ Primer Plus (Stephen Prata), with a significantly less favorable review. [/sub]
    *不要与c++的引物+ (Stephen Prata)混淆,因为它的评价要低得多。
    Introductory, with previous programming experience

    A Tour of C++ (Bjarne Stroustrup) (EBOOK) The “tour” is a quick (about 180 pages and 14 chapters) tutorial overview of all of standard C++ (language and standard library, and using C++11) at a moderately high level for people who already know C++ or at least are experienced programmers. This book is an extended version of the material that constitutes Chapters 2-5 of The C++ Programming Language, 4th edition.“旅游”是一个快速的(大约180页和14章)的教程,介绍所有标准c++(语言和标准库,使用c++ 11),对于那些已经知道c++或者至少是有经验的程序员的人来说,这是一个相当高的水平。本书是《c++编程语言第4版》第2-5章内容的扩展版本。
    Accelerated C++ (Andrew Koenig and Barbara Moo) This basically covers the same ground as the C++ Primer, but does so on a fourth of its space. This is largely because it does not attempt to be an introduction to programming, but an introduction to C++ for people who"ve previously programmed in some other language. It has a steeper learning curve, but, for those who can cope with this, it is a very compact introduction to the language. (Historically, it broke new ground by being the first beginner"s book to use a modern approach to teaching the language.) Despite this, the C++ it teaches is purely C++98. [Review]加速c++ (Andrew Koenig和Barbara Moo)基本上覆盖了与c++入门相同的基础,但是在它的四分之一的空间中这样做。这很大程度上是因为它并没有试图成为编程的入门,而是为那些之前用其他语言编程的人介绍c++。它的学习曲线更陡,但对于那些能够应付这一问题的人来说,这是一种非常紧凑的语言入门。(从历史上看,它是第一本用现代的方法来教授语言的初学者的书,开辟了新的天地。)尽管如此,c++的教学是纯c++ 98。(审查)

    Best practices

    Effective C++ (Scott Meyers) This was written with the aim of being the best second book C++ programmers should read, and it succeeded. Earlier editions were aimed at programmers coming from C, the third edition changes this and targets programmers coming from languages like java. It presents ~50 easy-to-remember rules of thumb along with their rationale in a very accessible (and enjoyable) style. For C++11 and C++14 the examples and a few issues are outdated and Effective Modern C++ should be preferred. [Review]有效的c++ (Scott Meyers)写的目的是成为最好的第二本书,c++程序员应该阅读,并且它成功了。早期版本针对的是来自C的程序员,第三版改变了这一点,目标程序员来自Java等语言。它展示了~50易于记忆的经验法则和他们的基本原理在一个非常容易接近(和愉快)的风格。对于c++ 11和c++ 14,示例和一些问题是过时的,有效的现代c++应该是首选。(审查)
    Effective Modern C++ (Scott Meyers) This is basically the new version of Effective C++, aimed at C++ programmers making the transition from C++03 to C++11 and C++14. 有效的现代c++ (Scott Meyers),这基本上是有效c++的新版本,目标是c++程序员,从c++ 03到c++ 11和c++ 14。
    Effective STL (Scott Meyers) This aims to do the same to the part of the standard library coming from the STL what Effective C++ did to the language as a whole: It presents rules of thumb along with their rationale. [Review]
    有效的STL (Scott Meyers)的目的是对标准库的一部分进行同样的操作,从STL中获得有效的c++对整个语言的影响:它给出了经验法则和他们的基本原理。(审查)



    Intermediate

    More Effective C++ (Scott Meyers) Even more rules of thumb than Effective C++. Not as important as the ones in the first book, but still good to know.更有效的c++ (Scott Meyers)甚至更多的经验法则比有效的c++。没有第一本书里的那么重要,但仍然很好。
    Exceptional C++ (Herb Sutter) Presented as a set of puzzles, this has one of the best and thorough discussions of the proper resource management and exception safety in C++ through Resource Acquisition is Initialization (RAII) in addition to in-depth coverage of a variety of other topics including the pimpl idiom, name lookup, good class design, and the C++ memory model. [Review]优秀的c++(Herb Sutter)表示为一系列的谜题,这有一个最好的和彻底的讨论适当的资源管理和异常安全在c++中通过资源获取初始化(RAII)除了深入报道各种各样的其他主题包括pimpl成语,名称查找,良好的课堂设计,c++内存模型。(审查)
    More Exceptional C++ (Herb Sutter) Covers additional exception safety topics not covered in Exceptional C++, in addition to discussion of effective object-oriented programming in C++ and correct use of the STL. [Review]更特殊的c++ (Herb Sutter)包含了额外的例外安全主题,除了在c++中讨论有效的面向对象编程和正确使用STL之外,还没有涉及到异常c++。(审查)
    Exceptional C++ Style (Herb Sutter) Discusses generic programming, optimization, and resource management; this book also has an excellent exposition of how to write modular code in C++ by using non-member functions and the single responsibility principle. [Review]特殊的c++风格(Herb Sutter)讨论了通用编程、优化和资源管理;本书还介绍了如何使用非成员函数和单一责任原则在c++中编写模块化代码。(审查)
    C++ Coding Standards (Herb Sutter and Andrei Alexandrescu) “Coding standards” here doesn"t mean “how many spaces should I indent my code?” This book contains 101 best practices, idioms, and common pitfalls that can help you to write correct, understandable, and efficient C++ code. [Review]c++编码标准(Herb Sutter和Andrei rescu)“编码标准”并不意味着“我应该缩进多少空格?”这本书包含101个最佳实践、习语和常见的陷阱,可以帮助你写出正确的、可以理解的、有效的c++代码。(审查)
    C++ Templates: The Complete Guide (David Vandevoorde and Nicolai M. Josuttis) This is the book about templates as they existed before C++11. It covers everything from the very basics to some of the most advanced template metaprogramming and explains every detail of how templates work (both conceptually and at how they are implemented) and discusses many common pitfalls. Has excellent summaries of the One Definition Rule (ODR) and overload resolution in the appendices. A second edition covering C++11, C++14 and C++17 has been already published . [Review]c++模板:完整的指南(David Vandevoorde和Nicolai M. Josuttis)这是关于模板的书,因为它们在c++ 11之前就已经存在了。它涵盖了从基础到一些最先进的模板元编程的所有内容,并解释了模板工作的每个细节(概念上和如何实现的),并讨论了许多常见的陷阱。在附录中有一个定义规则(ODR)和重载解析的优秀摘要。第二版包括c++ 11、c++ 14和c++ 17已经发布。(审查)



    Advanced

    Modern C++ Design (Andrei Alexandrescu) A groundbreaking book on advanced generic programming techniques. Introduces policy-based design, type lists, and fundamental generic programming idioms then explains how many useful design patterns (including small object allocators, functors, factories, visitors, and multi-methods) can be implemented efficiently, modularly, and cleanly using generic programming. [Review]现代c++设计(Andrei alexrescu)一本关于高级通用编程技术的开创性书籍。介绍了基于策略的设计、类型列表和基本的通用编程习惯,然后解释了有多少有用的设计模式(包括小对象分配器、函数、工厂、访问者和多方法)可以高效地、模块化地、干净地使用泛型编程实现。(审查)
    C++ Template Metaprogramming (David Abrahams and Aleksey Gurtovoy)c++模板元编程(David Abrahams和Aleksey Gurtovoy)
    C++ Concurrency In Action (Anthony Williams) A book covering C++11 concurrency support including the thread library, the atomics library, the C++ memory model, locks and mutexes, as well as issues of designing and debugging multithreaded applications.在Action (Anthony Williams)中,有一本书涵盖了c++ 11的并发性支持,包括线程库、atomics库、c++内存模型、锁和互斥锁,以及设计和调试多线程应用程序的问题。
    Advanced C++ Metaprogramming (Davide Di Gennaro) A pre-C++11 manual of TMP techniques, focused more on practice than theory. There are a ton of snippets in this book, some of which are made obsolete by type traits, but the techniques, are nonetheless useful to know. If you can put up with the quirky formatting/editing, it is easier to read than Alexandrescu, and arguably, more rewarding. For more experienced developers, there is a good chance that you may pick up something about a dark corner of C++ (a quirk) that usually only comes about through extensive experience.先进的c++元编程(Davide Di Gennaro)是一种预c++的TMP技术手册,主要关注实践而不是理论。这本书中有大量的片段,其中有些是由于类型特征而被淘汰的,但是这些技巧仍然是有用的。如果你能忍受古怪的格式化/编辑,它比亚历山大更容易阅读,也可以说是更有价值。对于更有经验的开发人员来说,有一个很好的机会,您可能会发现一些关于c++的一个黑暗的角落(一个怪癖),通常只有通过丰富的经验才会出现。



    Reference Style - All Levels

    The C++ Programming Language (Bjarne Stroustrup) (updated for C++11) The classic introduction to C++ by its creator. Written to parallel the classic K&R, this indeed reads very much like it and covers just about everything from the core language to the standard library, to programming paradigms to the language"s philosophy. [Review] c++编程语言(Bjarne Stroustrup)(更新为c++ 11)其创建者对c++的经典介绍。与经典的K&R并行的是,它确实读起来非常像它,涵盖了从核心语言到标准库的所有内容,到编程范式到语言的哲学。(审查)
    C++ Standard Library Tutorial and Reference (Nicolai Josuttis) (updated for C++11) The introduction and reference for the C++ Standard Library. The second edition (released on April 9, 2012) covers C++11. [Review]c++标准库教程和参考(Nicolai Josuttis)(更新为c++ 11),介绍c++标准库的介绍和参考。第二版(于2012年4月9日发布)涵盖了c++ 11。(审查)
    The C++ IO Streams and Locales (Angelika Langer and Klaus Kreft) There"s very little to say about this book except that, if you want to know anything about streams and locales, then this is the one place to find definitive answers. [Review]c++ IO流和Locales (Angelika Langer和Klaus Kreft)除了这一点之外,几乎没有什么可说的,如果你想知道关于流和地区的任何信息,那么这是一个找到明确答案的地方。(审查)

    C++11/14 References:
    c++ 11/14引用:

    The C++ Standard (INCITS/ISO/IEC 14882-2011) This, of course, is the final arbiter of all that is or isn"t C++. Be aware, however, that it is intended purely as a reference for experienced users willing to devote considerable time and effort to its understanding. As usual, the first release was quite expensive ($300+ US), but it has now been released in electronic form for $60US.c++标准(INCITS/ISO/ iec14882 -2011),当然,这是所有的或不是c++的最终仲裁者。但是,请注意,它的目的纯粹是为了让有经验的用户愿意花费大量时间和精力来理解它。和往常一样,第一次发行的价格相当昂贵(300美元+美元),但现在已经以60美元的电子形式发行了。
    The C++14 standard is available, but seemingly not in an economical form – directly from the ISO it costs 198 Swiss Francs (about $200 US). For most people, the final draft before standardization is more than adequate (and free). Many will prefer an even newer draft, documenting new features that are likely to be included in C++17.c++ 14标准是可用的,但似乎不是一种经济形式——直接来自ISO,它的成本是198瑞士法郎(大约200美元)。对于大多数人来说,标准化之前的最终草案是绰绰有余的(而且是免费的)。许多人更喜欢更新的草案,记录可能包含在c++ 17中的新特性
    Overview of the New C++ (C++11/14) (PDF only) (Scott Meyers) (updated for C++1y/C++14) These are the presentation materials (slides and some lecture notes) of a three-day training course offered by Scott Meyers, who"s a highly respected author on C++. Even though the list of items is short, the quality is high.这是Scott Meyers提供的为期三天的培训课程的演示材料(幻灯片和一些课堂讲稿),他是一位非常受人尊敬的c++作者。尽管物品清单很短,但质量很高。
    The C++ Core Guidelines (C++11/14/17/…) (edited by Bjarne Stroustrup and Herb Sutter) is an evolving online document consisting of a set of guidelines for using modern C++ well. The guidelines are focused on relatively higher-level issues, such as interfaces, resource management, memory management and concurrency affecting application architecture and library design. The project was announced at CppCon"15 by Bjarne Stroustrup and others and welcomes contributions from the community. Most guidelines are supplemented with a rationale and examples as well as discussions of possible tool support. Many rules are designed specifically to be automatically checkable by static analysis tools.c++核心指导方针(由Bjarne Stroustrup和Herb Sutter编辑)是一个不断发展的在线文档,包含了一套使用现代c++的指导方针。指导方针集中在相对较高的问题上,如接口、资源管理、内存管理和并发影响应用程序体系结构和库设计。该项目由Bjarne Stroustrup和其他人在CppCon"15宣布,并欢迎来自社区的贡献。大多数指南都有一个基本原理和例子,以及对可能的工具支持的讨论。许多规则是专门为通过静态分析工具自动检查而设计的。
    The C++ Super-FAQ (Marshall Cline, Bjarne Stroustrup and others) is an effort by the Standard C++ Foundation to unify the C++ FAQs previously maintained individually by Marshall Cline and Bjarne Stroustrup and also incorporating new contributions. The items mostly address issues at an intermediate level and are often written with a humorous tone. Not all items might be fully up to date with the latest edition of the C++ standard yet.C++超级常见问题(Marshall Cline, Bjarne Stroustrup等)是标准c++基础的一项努力,以统一之前由Marshall Cline和Bjarne Stroustrup单独维护的c++ FAQs,并包含新的贡献。这些项目主要是在中级水平上解决问题,通常用幽默的语气来写。并不是所有的项目都可以与最新版本的c++标准完全一致。
    cppreference.com (C++03/11/14/17/…) (initiated by Nate Kohl) is a wiki that summarizes the basic core-language features and has extensive documentation of the C++ standard library. The documentation is very precise but is easier to read than the official standard document and provides better navigation due to its wiki nature. The project documents all versions of the C++ standard and the site allows filtering the display for a specific version. The project was presented by Nate Kohl at CppCon"14.由Nate Kohl发起的cppreference.com (c++ 03/11/14/17/…)是一个wiki,它总结了基本的核心语言特性,并有大量的c++标准库文档。文档非常精确,但是比官方的标准文档更容易阅读,并且由于其wiki性质提供了更好的导航。该项目记录了c++标准的所有版本,并且该站点允许对特定版本的显示进行过滤。该项目由CppCon"14的Nate Kohl提出。



    Classics / Older
    Note: Some information contained within these books may not be up-to-date or no longer considered best practice.
    注:这些书中包含的一些信息可能不是最新的或不再被认为是最佳实践。

    The Design and Evolution of C++ (Bjarne Stroustrup) If you want to know why the language is the way it is, this book is where you find answers. This covers everything before the standardization of C++.c++的设计和演变(Bjarne Stroustrup)如果你想知道为什么语言是这样的,这本书就是你找到答案的地方。这涵盖了c++标准化之前的所有内容。
    Ruminations on C++ - (Andrew Koenig and Barbara Moo) [Review]关于c++的思考(Andrew Koenig和Barbara Moo)[点评]
    Advanced C++ Programming Styles and Idioms (James Coplien) A predecessor of the pattern movement, it describes many C++-specific “idioms”. It"s certainly a very good book and might still be worth a read if you can spare the time, but quite old and not up-to-date with current C++. 高级c++编程风格和惯用语(James Coplien)是模式运动的前身,它描述了许多c++特定的“惯用语”。这当然是一本非常好的书,如果你能抽出时间的话,它还是值得一读的。
    Large Scale C++ Software Design (John Lakos) Lakos explains techniques to manage very big C++ software projects. Certainly, a good read, if it only was up to date. It was written long before C++ 98 and misses on many features (e.g. namespaces) important for large-scale projects. If you need to work in a big C++ software project, you might want to read it, although you need to take more than a grain of salt with it. The first volume of a new edition is expected in 2018.大型c++软件设计(John Lakos) Lakos解释了管理非常大的c++软件项目的技术。当然,如果它只是最新的,那是一本好书。它早在c++ 98之前就已经写好了,并且在许多特性(例如名称空间)中忽略了对大型项目的重要性。如果您需要在一个大型c++软件项目中工作,您可能想要阅读它,尽管您需要的不仅仅是一粒盐。新版本的第一卷预计在2018年发行。
    Inside the C++ Object Model (Stanley Lippman) If you want to know how virtual member functions are commonly implemented and how base objects are commonly laid out in memory in a multi-inheritance scenario, and how all this affects performance, this is where you will find thorough discussions of such topics.在c++对象模型(Stanley Lippman)中,如果您想知道虚拟成员函数是如何普遍实现的,以及在多继承场景中如何将基本对象放在内存中,以及这些如何影响性能,那么您将在这里找到关于这些主题的深入讨论。
    The Annotated C++ Reference Manual (Bjarne Stroustrup, Margaret A. Ellis) This book is quite outdated in the fact that it explores the 1989 C++ 2.0 version - Templates, exceptions, namespaces and new casts were not yet introduced. Saying that however, this book goes through the entire C++ standard of the time explaining the rationale, the possible implementations, and features of the language. This is not a book to learn programming principles and patterns on C++, but to understand every aspect of the C++ language.注释c++参考手册(Bjarne Stroustrup, Margaret A. Ellis)这本书很过时,因为它探索了1989年的c++ 2.0版本——模板、异常、名称空间和新的类型转换还没有被引入。但是,这本书通过了整个c++标准,解释了语言的基本原理、可能的实现和特性。这不是一本学习c++语言编程原理和模式的书,而是了解c++语言的各个方面。
    Thinking in C++ (Bruce Eckel) Two volumes; is a tutorial style free set of intro level books. Downloads: vol 1, vol 2. Unfortunately they’ re marred by a number of trivial errors (e.g. maintaining that temporaries are automatically
    1. const
    复制代码
    ), with no official errata list. A partial 3[sup]rd[/sup] party errata list is available at (http://www.computersciencelab.com/Eckel.htm), but it’s apparently not maintained.用c++ (Bruce Eckel)思考两卷;是一套入门级的入门级书籍。下载:vol 1, vol 2。不幸的是,他们被一些琐碎的错误所破坏(例如,保持临时的时间是自动的),没有正式的勘误表。在(http://www.computersciencelab.com/Eckel.htm)上有一个部分的第三方errata列表,但它显然没有被维护。
    Scientific and Engineering C++: An Introduction to Advanced Techniques and Examples (John Barton and Lee Nackman) It is a comprehensive and very detailed book that tried to explain and make use of all the features available in C++, in the context of numerical methods. It introduced at the time several new techniques, such as the Curiously Recurring Template Pattern (CRTP, also called Barton-Nackman trick). It pioneered several techniques such as dimensional analysis and automatic differentiation. It came with a lot of compilable and useful code, ranging from an expression parser to a Lapack wrapper. The code is still available here: http://www.informit.com/store/scientific-and-engineering-c-plus-plus-an-introduction-9780201533934. Unfortunately, the books have become somewhat outdated in the style and C++ features, however, it was an incredible tour-de-force at the time (1994, pre-STL). The chapters on dynamics inheritance are a bit complicated to understand and not very useful. An updated version of this classic book that includes move semantics and the lessons learned from the STL would be very nice.科学和工程c++:介绍先进的技术和例子(约翰·巴顿和李·纳克曼),这是一本全面的、非常详细的书,试图解释和利用c++中所有可用的特性,在数值方法的范围内。它在当时引入了一些新的技术,比如奇怪的重复的模板模式(CRTP,也叫bartnackman技巧)。它开创了一些技术,如量纲分析和自动分化。它提供了许多可编译和有用的代码,从表达式解析器到Lapack包装器。该代码仍然可以在这里找到:http://www.informit.com/store/scientificand -engineering-c-plus-导入-9780201533934。遗憾的是,这些书在风格和c++特性上已经有些过时了,但是,在当时(1994年,前stl),它是一种令人难以置信的力量。关于动态继承的章节有些复杂,理解起来也不太有用。这个经典书籍的更新版本包括移动语义和从STL学到的经验将是非常好的。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-3-29 13:14 , Processed in 0.383872 second(s), 48 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表