本书为《C++17 the complete guide》(第一版) by Nicolai M. Josuttis的个人中文翻译版, 仅供学习和交流使用 C++17是现代 C++编程中的下一个版本,最新版本的gcc、clang和 Visual C++ 都至少已经部分支持它。尽管 迁移到 C++17 并不像迁移到 C++11一样是一个巨大的变化,但 C++17也包含了非常多很小但却很有价值的语言 和库特性。它们再一次改变了我们使用 C++编程的方式,无论是对应用程序员还是提供基础库的程序员来说都 是如此。 《C++17完全指南》是一本深入解析C++17新特性的书籍,由Nicolai M. Josuttis撰写。C++17是C++编程语言的一个重要版本,虽然相较于C++11的革新可能显得较为温和,但它引入了许多小而实用的改进,这些改进对提升开发效率和代码质量有着显著的影响。本书旨在帮助开发者理解和掌握C++17的新功能,无论你是应用程序员还是库开发者,都能从中受益。 书中首先介绍了C++17标准的关键特点,包括但不限于: 1. **结构化绑定**:这是一个全新的语法特性,允许开发者更方便地处理元组(tuple-like)对象,可以一次性解构多个值,提高了代码的可读性和简洁性。结构化绑定可用于结构体、类、原生数组,以及`std::pair`、`std::tuple`和`std::array`等类型。此外,通过提供一个类似于Tuple的API,结构化绑定还能增强自定义类型的功能。 2. **带初始化的if和switch语句**:在C++17中,可以在if和switch语句中进行变量初始化,这使得代码更加紧凑,减少了临时变量的使用。例如,可以在if语句中直接声明并初始化一个变量,然后在后续的代码块中使用。 3. **折叠表达式**:C++17引入了折叠表达式,用于处理模板元编程中的元组和类型列表,使得元编程更加简洁和高效。 4. **字面量操作符重载**:开发者现在可以为自定义类型定义二进制字面量操作符,如`"_"b`或`"_"s`,增强了数值和字符串的表示能力。 5. **返回类型推断改进(即`auto`关键字的改进)**:在C++17中,函数的返回类型可以通过`= default;`和`= delete;`进行推断,使得编写函数更加灵活。 6. **`std::variant`和`std::any`**:这两个库组件提供了更加安全和灵活的多态数据类型,`std::variant`代表有限数量的类型之一,`std::any`则可以存储任意类型的数据。 7. **`std::optional`**:这个新库组件允许表示可能缺失的值,提高了代码的健壮性和错误处理能力。 8. **`std::string_view`**:作为轻量级字符串引用,`std::string_view`提升了处理字符串的效率,减少了不必要的拷贝。 9. **并行算法**:C++17扩展了STL,引入了一系列并行版本的算法,如`std::execution::par`,可以利用多核处理器进行并行计算。 10. **其他改进**:还包括更高效的`std::allocator`、`std::make_unique`的泛型版本、更好的模板错误消息等。 为了便于读者学习,本书采用了清晰的结构,详细讲解了每个新特性的使用方法、背后的动机和可能的应用场景。书中还包含了大量的示例代码,帮助读者更好地理解并实践这些新特性。同时,作者鼓励读者在遇到问题时积极反馈,以便不断更新和完善内容。 《C++17完全指南》是一本全面、深入的C++17参考书,它将帮助读者熟练掌握C++17的新特性,提升编程技能,从而编写出更高效、更易维护的现代C++代码。
2025-04-28 10:34:25 2.11MB CPP17 C++17
1
掌握C ++ 17 STL 这是发行的的代码存储库。 它包含从头到尾完成本书所必需的所有支持项目文件。 关于这本书 在本书中,您将看到C ++ 17标准库的最重要的功能。 为了简洁起见,省略了某些部分,例如; 但是我们将介绍整个现代STL(每个标准容器和每个标准算法),以及诸如智能指针,随机数,正则表达式和C ++新库等重要主题。 您将学习构建自己的迭代器类型; 您自己的内存分配器,使用std :: pmr :: memory_resource; 您自己的线程池,使用std :: future。 说明和导航 05章的代码被组织到一个文件夹中,Chapter05的代码被组织在一个单独的文件夹中。 第01章和第02章没有代码。 该代码将如下所示: public class Program { public static void Main(string[]
2023-09-05 06:43:55 57KB C++
1
gsl-lite :适用于C ++ 98,C ++ 11的准则支持库 元数据 建造 套餐 在线尝试 gsl-lite是最初基于的的实现。 内容 依存关系 安装及使用 版本语义 在库中使用gsl-lite 配置选项 特征 弃用 报告与 建立测试 其他GSL实施 注释和参考 附录 用法示例 # include < gsl> int * use ( gsl::not_null< int> p ) { // use p knowing it's not nullptr, NULL or 0. return p; } struct Widget { Widget () : owned_ptr_( new int ( 42 ) ) {} ~Widget () { delete owned_ptr_; } void w
2023-03-03 14:42:36 148KB cpp14 cpp11 header-only cpp17
1
C ++中的FastCGI实现{#mainpage} Dmitigr Fcgi(以下简称Fcgi)-是一种可靠,易于使用且高性能的协议,以C ++编写。 Fcgi是项目的一部分。 注意,该软件为“测试版”质量,并且API随时可能更改! 文献资料 生成的文档位于。 有。 你好,世界 # include < dmitigr> # include < iostream> int main () { namespace fcgi = dmitigr::fcgi; try { const auto port = 9000 ; const auto backlog = 64 ; const auto server = fcgi::Listener_options::make ( " 0.0.0.0 " , port, backlog)-> ma
2023-02-07 21:04:27 173KB cpp17 cpp-library fastcgi-library C++
1
从C ++轻松创建GnuPlot脚本 目录 全局配置演示 文献资料 资料类别 脚本类 Global_Config类 参考 常问问题 它是什么? 一个简单的C ++ 17库,可以轻松创建和执行gnuplot脚本。 这些脚本将嵌入其数据,以后可以重播/修改。 该库取决于{fmt}库。 当我想用C ++开发东西时以最少的精力绘制一些数据时,就使用它。 目前,该库仅在Linux下进行了测试(它也应在Windows下运行,但我尚未检查过)。 消息 [2020-10-20周二] v1.1.0版本! 一些编译警告修复 一个新的Data_Array_2类 [2020-01-18 Sat 09:17] 版本v1.0.0已发布! 更多文件 修复export_as(...,path / output_filename)中的错误:路径被忽略 [2020-01-09 Thu 22:46] 添加
2022-10-19 14:38:49 95KB cpp cpp17 gnuplot mesonbuild
1
vsgExamples 测试和说明如何使用和可选附件库的示例程序。 示例程序根据它们说明其依赖关系的功能类型进行分组。 例子 实例 示例 例子 范例 示例 例子 示例 例子 示例 示例 示例 实例 构建vsgExamples的快速指南 先决条件: 符合C ++ 17的编译器,即g ++ 7.3或更高版本,Clang 6.0或更高版本,Visual Studio 2017或更高版本。 1.1或更高版本。 3.7或更高版本。 使用母版 可选-用于3D模型和图像加载器 可选-用于窗口GUI示例 上面的依赖版本已知可以正常工作,因此已将它们设置为当前的最低版本,有可能可以针对较旧的版本进行构建。 如果您发现旧版本成功,请告诉我们,我们可以更新版本信息。 命令行构建说明: 要在源代码中进行构建和安装,并将所有依赖项安装在标准系统目录中: git clone https://git
2022-04-26 20:30:22 4.51MB modern vulkan cpp17 openscenegraph
1
币安期货C ++ 从2021年2月中开始,这是一个活跃的早期项目,因此,我建议您不要依赖该库,除非它经过充分测试并且API稳定为止。 更新 2021年3月5日 添加了accountBalance(),klines(),takerBuySellVolume() 解决了不断开连接的问题 2021年3月3日 添加了accountInformation(): : 添加了allOrders(): ://binance-docs.github.io/apidocs/futures/en/#all-orders-user_data 2021年3月1日 放弃对现货市场的支持以专注于期货 从回购中删除的现货代码 回购已重命名为“ binance-futures-cpp”,代码名称空间现在为“ bfcpp” 概括 binancews是一个C ++ 17库,它从Binance加密货币交易所接收市场
2021-09-13 20:22:28 36KB cpp cpp17 cpprestsdk binance
1
docker-cpp17-base:用于通用C ++ CI构建的基本Docker映像
2021-01-30 14:09:17 18KB docker jenkins ci-server dockerfile
1