c++23

charlie1145141913 天前
开发语言·c++·学习·设计模式·桥接模式·c++23·概论
精读C++设计模式20 —— 结构型设计模式:桥接模式这是我们的第二个设计模式——桥接模式!桥接模式更加直白了,我们之前的适配器更倾向于对接口本身的桥接,这里说的是系统协作的桥接。笔者认为他跟适配器区别谈不上很大。但是还是要仔细说一说这个桥接模式,以及我们下面要引出的,笔者最最常用的pImpl法,他就属于桥接模式的一个响当当的代表
疯狂的Alex11 天前
人工智能·c++23
半精度浮点在AI推理中的应用:C++23新类型与性能测试在AI推理场景中,“精度”与“性能”的平衡始终是核心矛盾——单精度浮点(FP32)虽精度足够,但16字节的矩阵乘法会占用大量显存带宽,导致推理速度受限;而整数量化(如INT8)虽性能优异,却会引入明显精度损失,难以满足图像分类、自然语言处理等高精度需求。半精度浮点(FP16/BF16)的出现恰好填补了这一空白,其2字节的存储体量能将显存占用减少50%,同时精度损失可控。
疯狂的Alex12 天前
rpc·矩阵·c++23
C++23特性全解析:从编译器支持矩阵到多维数组性能优化实战C++23标准作为C++20后的首个重大更新,带来了31项正式特性和17项技术规范扩展,在语言表达能力、标准库实用性和性能优化方面实现了显著突破。其中,多维数组视图(mdspan)、范围适配器管道、临时值生命周期延长等特性,直接解决了工业界长期面临的性能瓶颈和代码冗余问题。
雪域迷影2 个月前
开发语言·c++·c++23
C++23中的std::expected:异常处理众所周知,C++23以前的异常处理是比较麻烦的,尤其是自己要在可能抛出异常的地方,需要自己去捕获它,比如除数为0的异常、使用std::stoi函数将字符串转换成int整型数据、处理文件读写的异常等等,不然很容易造成程序终止。 关于C++23中引入的std::expected,这一全新的词汇表类型,它为函数返回结果的处理提供了一种更加优雅、类型安全的解决方案。
十年编程老舅3 个月前
c++·c++11·c++20·c++14·c++23·c++17·c++新特性
跨越十年的C++演进:C++20新特性全解析跨越十年的C++演进系列,分为5篇,本文为第四篇,后续会持续更新C++23~前3篇如下:跨越十年的C++演进:C++11新特性全解析
oioihoii4 个月前
java·jvm·c++23
C++23 已移除特性解析C++ 作为一门历史悠久且广泛应用的编程语言,始终在不断发展和演进。每一个新版本的发布,都会带来一系列新的特性和改进,同时也会移除一些不再适用或存在问题的特性。C++23 作为 C++ 标准的一个重要版本,也不例外。移除某些特性是为了简化语言,提高代码的安全性和可维护性,避免潜在的错误和混淆。本文将详细介绍 C++23 中已移除的几个重要特性。
oioihoii4 个月前
c++23
C++23 已弃用特性在C++的发展历程中,标准库不断演进,一些特性会随着时间推移而被弃用。C++23 中,std::aligned_storage 与 std::aligned_union(提案 P1413R3)以及 std::numeric_limits::has_denorm(提案 P2614R2)就被列入了弃用名单。下面我们来详细了解这些特性以及它们被弃用的原因。
oioihoii4 个月前
c++23
C++23 std::fstreams基础回顾在C++编程的领域中,文件操作是一项基础且重要的功能。std::fstream作为C++标准库中用于处理文件输入输出的核心类,为开发者提供了便捷的文件读写操作方式。随着C++标准的不断演进,C++23为std::fstream带来了一项备受期待的新特性——支持独占模式(P2467R1)。这一特性的引入,不仅填补了C++在文件操作方面与其他标准(如ISO C和POSIX)的差距,还为开发者在处理文件时提供了更强大的控制能力和更高的安全性。本文将深入探讨C++23中std::fstreams支持的独占模式(P
oioihoii4 个月前
c++·算法·c++23
C++23 <spanstream>:基于 std::span 的高效字符串流处理在 C++23 标准中,新增了一个名为 <spanstream> 的标头,提供了一种基于 std::span 的字符串流处理方式(提案 P0448R4)。相比于传统的 <sstream>(如 std::stringstream),<spanstream> 提供了更高效、更可控的字符序列处理方式,尤其适用于需要零动态内存分配或固定缓冲区的场景。
oioihoii4 个月前
java·开发语言·c++23
C++23:std::print和std::println格式化输出新体验C++作为一门强大且广泛应用的编程语言,在不断地发展和演进。每一个新的标准版本都会为开发者带来一些令人期待的新特性,以提升开发效率和代码的可读性。C++23也不例外,它引入了许多新的特性和改进,其中 头文件中提供的 std::print 和 std::println 函数就是两个非常实用的格式化输出工具。本文将详细介绍这两个函数的定义、功能和使用示例,帮助大家更好地理解和使用它们。
oioihoii4 个月前
java·开发语言·c++23
C++23中std::span和std::basic_string_view可平凡复制提案解析在C++的发展历程中,每一个新版本都带来了一系列令人期待的新特性,这些特性不仅提升了语言的性能和表达能力,还为开发者提供了更加便捷和高效的编程方式。C++23作为C++标准的一个重要版本,在很多方面进行了完善和优化。其中,P2251R1提案要求std::span和std::basic_string_view可平凡复制,这一改变对C++编程产生了重要影响。
oioihoii4 个月前
算法·c++23
C++23 新成员函数与字符串类型的改动C++ 作为一门广泛应用的编程语言,一直在不断发展和演进。C++23 作为其发展历程中的一个重要版本,引入了许多新的特性和改进,其中在字符串处理方面有一些显著的改动。这些改动不仅提升了代码的性能和效率,还增强了代码的安全性和可读性。本文将详细介绍 C++23 中几个重要的字符串相关的新特性,包括 std::basic_string::contains 与 std::basic_string_view::contains、禁止从 nullptr 构造 std::basic_string 和 std::bas
oioihoii4 个月前
算法·c++23
C++23 对部分特性的 constexpr 支持std::bitset 是一个固定大小的位序列容器,在 C++23 之前,仅有一个构造函数和 operator[] 被标记为 constexpr。P2417R2 提案对 std::bitset 的 constexpr 接口进行了扩展,鉴于 std::string 能够是 constexpr,std::bitset 的所有内部结构以及完整的 API 如今都能够是 constexpr。
oioihoii5 个月前
c++23
C++23 容器推导指引中对于分配器的非推导语境(P1518R2)容器推导指引(CTAD)是C++17引入的一项特性,它允许编译器根据构造函数的参数自动推导模板参数,从而简化了容器的实例化过程。然而,在处理分配器时,CTAD存在一些问题,主要体现在以下两个方面:
oioihoii5 个月前
c++23
C++23 新特性:允许 std::stack 与 std::queue 从迭代器对构造 (P1425R4)在C+++20及之前的版本中,std::stack和std::queue容器仅提供了有限的构造函数,通常只允许从单个容器或其他std::stack/std::queue实例进行构造。这限制了开发者在处理数据时的灵活性,特别是在需要从特定范围或序列的一部分构造容器时。
oioihoii5 个月前
网络协议·rpc·c++23
C++23关联容器的异质擦除重载 (P2077R2)介绍在C++中,关联容器是一种非常重要的数据结构,它在存储元素值的同时,还会为各元素额外配备一个值(键),通过键可以高效地存储和读取元素。传统的关联容器在进行查找、插入和删除操作时,对键的类型有严格要求,通常要求键的类型必须与容器中存储的键类型完全一致。
oioihoii5 个月前
java·开发语言·c++23
C++23:修正常量迭代器、哨兵和范围在C++的发展历程中,每一个新版本都带来了一系列令人期待的新特性,这些特性不仅提升了语言的性能和表达能力,还为开发者提供了更加便捷和高效的编程方式。C++23作为C++标准的一个重要版本,在很多方面进行了完善和优化。其中,对常量迭代器、哨兵和范围的修正,特别是ranges::cbegin和其他类似实用程序的改进,是值得关注的一个点。本文将深入探讨C++23在这方面的改进,以及提案P2278R4所带来的变化。
oioihoii5 个月前
java·开发语言·c++23
C++23 新增扁平化关联容器详解在 C++23 标准中,引入了四个新的关联容器:std::flat_set、std::flat_multiset、std::flat_map 和 std::flat_multimap。这些容器是对底层有序随机访问容器进行包装的容器适配器,旨在为开发者提供在某些场景下比传统关联容器更高效的选择。在介绍这四个新容器之前,我们先回顾一下 C++ 中已有的关联容器。
oioihoii5 个月前
c++23
C++23 ranges::range_adaptor_closure:程序定义的范围适配器闭包的辅助类C++23 引入了 std::ranges::range_adaptor_closure,这是一个辅助类模板,用于定义用户自定义的范围适配器闭包对象。这一特性主要来源于 P2387R3 提案,旨在支持用户定义的范围适配器与标准库视图适配器在管道表达式中的互操作。
oioihoii5 个月前
c++23
C++23:ranges::iota、ranges::shift_left和ranges::shift_right详解C++23作为C++编程语言的一个重要版本,为开发者带来了许多新的特性和改进。其中,ranges::iota、ranges::shift_left与ranges::shift_right这三个无约束算法的范围化版本(P2440R1)为处理序列数据提供了更加便捷和高效的方式。本文将详细介绍这三个算法的定义、功能、使用场景以及代码示例。