首页 > 编程语言 >c++学习书籍

c++学习书籍

时间:2023-12-19 09:45:31浏览次数:49  
标签:std Primer 特性 c++ 学习 C++ https 第五版 书籍

 

 

C++ Primer 第五版 第四版 对比 差异

C++ Primer是一本经典的C++编程教材,它的第五版与第四版有哪些不同点呢?

首先,C++ Primer第五版引入了C++11标准,讲解了C++11的新特性,例如auto类型推导、lambda表达式、右值引用、智能指针等等。这些新特性有助于提高C++程序的性能和简化代码实现,对于想要深入了解C++的开发者来说是非常有用的。

其次,C++ Primer第五版在章节安排上进行了重新调整,更好地优化了教材结构。具体来说,第五版对C++模板进行了更加深入的讲解,将其从原先的一章节拆分成了两章节,方便学生更好地掌握模板的内容。此外,第五版还新增了“容器库”和“算法库”的章节,让开发者更加深入了解C++ STL。

另外,C++ Primer第五版还添加了一些新的例子和习题,帮助读者更好地理解和掌握C++语言的特性和应用。同时,第五版的代码更加规范和简洁,容易读懂和理解,有助于降低学习曲线,从而更快地掌握C++编程技能。

总之,C++ Primer第五版与第四版相比,更加适应现代C++编程,内容更加深入、系统化、实用化。如果你想要深入学习C++语言,那么C++ Primer第五版无疑是一本非常值得推荐的书籍。

 

 

作者:momo
链接:https://www.zhihu.com/question/355400393/answer/3245544440
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

C++98:
引入了以下新的库特性:
RTTI (运行时类型信息),包括dynamic_cast和typeid
类型转换运算符,如static_cast、dynamic_cast、const_cast和reinterpret_cast
mutable关键字
bool类型
模板实例化
成员模板
export关键字
标准库增加了一些新的内容,包括:本地化支持(locales)、bitset、valarray、auto_ptr、模板化的字符串、I/O流和复数1


C++03:
这是一个主要针对实现者的错误修复版本,以确保更大的一致性和可移植性。这个修订版解决了92个核心语言缺陷报告,125个库缺陷报告,并引入了一个新的语言特性:值初始化2


C++11:
引入了以下新的库特性:
std::tuple
std::any
std::optional
std::variant
std::string_view
std::invoke
std::apply
std::filesystem
std::byte
并集映射和集合
并行算法
std::sample
std::clamp
std::reduce
前缀求和算法
最大公约数和最小公倍数
std::not_fn
字符串转换为/从数字


C++14:
引入了以下新的库特性:
标准库类型的用户定义字面量
编译时整数序列
std::make_unique


C++17:
引入了以下新的库特性:
概念库
同步缓冲输出流
std::span
比特操作
数学常数
std::is_constant_evaluated
支持数组的std::make_shared
字符串上的开始与结束检查
检查关联容器是否有元素
std::bit_cast


C++20:
引入了以下新的库特性:
概念库
同步缓冲输出流
std::span
比特操作
数学常数
std::is_constant_evaluated
支持数组的std::make_shared
字符串上的开始与结束检查
检查关联容器是否有元素
std::bit_cast


C++23:
标准引入了以下新特性:
模块“std”:这是一个标准库模块,预计将改善编译。
if consteval:这是一个关于即时函数(immediate function)的特性,即consteval函数
Deducing this(P0847):这是C++23中最主要的特性之一。msvc在去年3月份就已支持该特性,可以在v19.32之后的版本使用。
std::expected(P0323):该特性用于解决错误处理的问题,增加了一个新的头文件 <expected>。
Formatted Output(P2093):该提案就是 std::print()。
import std(P2465)
out_ptr(P1132r8)
auto (x) decay copy(P0849)
简化隐式移动
修复范围for循环中的临时变量
多维和静态运算符[]
Unicode改进
静态constexpr在constexpr函数中

 

 

-std=c++17

 

作者:代码丸子
链接:https://www.zhihu.com/question/20410487/answer/1707839628
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

推荐几本经典书籍

C++ Primer 第五版

C++语法太过繁杂,很多语法特性一辈子也用不上。对于初学者来说,学完前7章就能写简单的程序。

《大话数据结构》

这实在是一本对新手非常友好的书,暂时先看完前5章就够了。此时应该多做一些练习,可以是简单的小软件或小游戏。

《C++ Primer 第五版》

没错还是这本书,之前7章学了基础语法。现在继续学习8~12章,涵盖了标准库常用组件的基本用法。想完整学习标准库的同学可以在未来深入阅读《C++标准程序库:自修教程与参考手册》。

进阶学习:

此时可以选择性地把《C++ Primer 第五版》剩下的部分看完,第15章面向对象是重要内容,需要认真研究。

此时也可以把《大话数据结构》看完,或换一本正经的深入讲解算法的书,比如《算法导论》。

《Effective C++》、《C++编程规范

C++给了程序员过高的自由度,这反而不是一件好事,这两本书告诉你使用C++哪些做法是正确的,哪些是错误的,C++进阶必读。还有一本补充读物《More Effective C++》可选读。

其次,明确初学者在学习中的一个误区:学理论记不住?

就因为只是在看书。

C++是一门很考验基本功的编程语言,没有所谓的速成门路

很多人看了网上的一些教程,就跟着去刷题,LeetCode、剑指offer……来者不拒。我很理解大家的这种焦虑,因为我也是这么过来的。但刷题的目的是为了更好地巩固和运用基础,现在却本末倒置了,这其实是一种错误的学习方法。

为此,胡光老师会在训练营里指出正确的学习路径,让大家认识到C++底层基础的重要性。同时,这个训练营也能够帮助大家定位自己的学习阶段,明确接下来的进阶方向。

如果语法知识学得差不多了,如何顺利过渡到实践开发层面?

这应该是很多C++初学者的苦恼。

一是C++的开源项目往往大而全,对初级阶段的人来说,以这些项目作为参考,无疑是杀鸡用牛刀。二,是C++的语法规则相对比较复杂,哼哧哼哧搞完一个项目,却处处是bug,最要命的是对此你还一无所知。

工程开发要遵循哪些规范?遵循它们的目的是什么?出错会造成哪些影响?对此,你最好要有一定的了解。在这个训练营当中,老师手把手教你,学习正确的编程范式,在短时间内最大限度地提升工程开发能力。

想进大厂心里又没底,该如何系统地准备面试?

面试考察的两大重点是代码能力和算法思维。要提高代码能力,没有捷径,唯有多练、多看。而算法思维,在有效的指导下,可以得到快速提升

    作者:匿名用户
链接:https://www.zhihu.com/question/36753768/answer/68861394
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

不带 plus 的最新版本。

学 C++,就要学习现代的,多范式的,重视 STL 容器与算法应用的,有良好代码风格和口味的 C++。

不能学陈腐的,半调子的,不重视利用库的(对已经被诟病标准库太少的 C++ 这种语言),代码风格混乱的东西。

C++ Primer Plus 就是后面一种。整本书充斥着定长数组见不到 std::vector 的使用,充斥着 char[] 却见不到 std::string 的使用,看完大半本书还不知道怎么给整数排序、没见过迭代器,一本号称涵盖了 C++11 特性的书把 auto_ptr 和 unique_ptr 都说不清楚。这种书不读也罢。

Accelerated C++ 在十五年前(2000 年)出版,写得也比 C++ Primer Plus 要现代精到得多。要快速学习 C++98 标准下的现代 C++ 风格,Accelerated C++ 就够了。

而要在 C++11 标准下学现代 C++ 风格,BS 的 Programming: Principles and Practice Using C++ 第二版就是这类入门书了。

在近十年,C++ 的重要作者的教材,如《Accelerated C++》、《Programming: Principles and Practice Using C++》,又如第 4 版以后的《C++ Primer》、第 3 版以后的《TC++PL》,都是用这样的现代观点写的。你要读这样的现代的观点的书

 

参考:

https://21xrx.com/Articles/read_article/201999

https://www.zhihu.com/question/355400393

https://www.zhihu.com/question/20410487

https://www.zhihu.com/question/36753768

 

标签:std,Primer,特性,c++,学习,C++,https,第五版,书籍
From: https://www.cnblogs.com/rebrobot/p/17912906.html

相关文章

  • 记录学习蓝牙控制硬件
    今天记录的是mesh组网蓝牙大致步骤:扫描周围设备、扫描到设备后,连接并获取地址、入网、订阅、发送接收消息目前定义的是16bit但是手机厂商定义的是32bit1.扫描/***StartscanningforBluetoothdevices.*记得申请蓝牙权限*@paramfilterUuidUUIDtofiltersc......
  • C++ Qt开发:TableWidget表格组件
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍TableWidget表格组件的常用方法及灵活运用。QTableWidget是Qt中用于显示表格数据的部件。它是......
  • 记录学习modbus 的资料
    modbus是一种串行通信协议,通过modbus从而达到控制plc的目的,现在的主流也俨然成为了工业领域的通信标准。modbus是一对一:一主一从主发从回   一对多也可以但是也是一对一的模式同时不能多个;如果支持广播那么就是一对多 主发送从不响应那种了这种情况通信查询国标GBT......
  • 网络流学习笔记
    这个必须写。先梳理一下,到时候再整理,证明先简写或者跳过。流网络:一个有向图,每条边有一个容量,有一个源点\(s\)和一个汇点\(t\)。每条边有一个属性称为容量,如果把流网络抽象成水管的话,那么边的容量就是每根水管的每秒最大承受的进水量。每条边也有一个流量,这个值大于等于\(0\)......
  • C++ Qt开发:MdiArea多窗体组件
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍MdiArea`组件的常用方法及灵活运用。QMdiArea(MultipleDocumentInterfaceArea)是Qt中用于创建多......
  • C++基础 -9- 函数的默认参数
     ———————函数的默认参数——————— ......
  • [学习笔记]珂朵莉树
    目录0x00:介绍1x00:思想1x01:节点保存1x02:核心操作split1x03:推平操作assign2x00:例题2x01:CF896C2x02:CF915E3x00:总结0x00介绍珂朵莉树(ChthollyTree),又称ODT(OldDriverTree),一种数据结构,但似乎暴力到不能称之为数据结构。可以很好地骗分,在随机数据下十分有效,常用于将\([l......
  • 基于深度学习网络的疲劳驾驶检测算法matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本matlab2022a 3.算法理论概述3.1疲劳检测理论概述      疲劳检测的原理是根据人体疲劳状态下的特征检测,和正常状态下的特征检测做对比。在做疲劳检测之前,首先需要分析人体在疲劳状态下与正常状态下的特征有哪些不......
  • c/c++中typedef定义结构体内成员赋初值
    写数据结构作业时遇到的问题:需要给typedef定义的结构体中的成员数组赋初值。如下:写数据结构作业时遇到的问题:需要给typedef定义的结构体中的成员数组赋初值。如下:typedefstruct{Node*nodes[maxsize];intfront,rear;}Queue;赋值方法如下:Queuenodes={{0},1,0};......
  • 机器学习-线性分类-支持向量机SVM-软间隔-13
    目录1.总结SVM2.软间隔svm1.总结SVMSVM算法的基础是感知器模型,感知器模型与逻辑回归的不同之处?逻辑回归sigmoid(θx)映射到0-1之间给出预测概率感知器分类sign(θx)输出θx的符号,+1或者-1给出x是属于正样本还是负样本直接输出θx的值就是线性回归感知器......