Modern C++
文章平均质量分 70
康熙说编程
拥有十五年工作经验的C++程序员,专注于金融交易系统的架构与开发。技术兴趣广泛,包括但不限于 C++、Java、Python、React,对设计模式、架构设计以及量化系统、区块链、Web3 技术充满热情。
展开
-
C++14 新特性:字面量和分隔符
C++14 继续沿用并扩展了 C++11 中引入的一些对字面量和分隔符的支持,提高了代码的可读性和编写的便捷性。这些特性包括二进制字面量、数字分隔符,以及用户自定义字面量的增强支持。原创 2024-05-20 09:30:00 · 355 阅读 · 0 评论 -
C++14 新特性:[[deprecated]] 属性
C++14 标准引入了 [[deprecated]] 属性,这是一个标准属性,用于标记程序中的类型、函数、变量、非静态数据成员以及模块等元素已经被弃用。原创 2024-05-19 09:30:00 · 912 阅读 · 0 评论 -
C++14 新特性:别名模板
C++14 中的别名模板是模板编程中一个强大的工具,它通过提供一种方式来定义模板的新名称,简化了复杂模板的使用,提高了代码的可读性和灵活性。原创 2024-05-18 09:30:00 · 247 阅读 · 0 评论 -
C++14 新特性:变量模板
C++14 引入了变量模板(Variable Templates),允许模板被用来定义变量,进一步增强了 C++ 模板的能力和灵活性。在此之前,模板主要用于定义函数模板和类模板,而C++14 通过引入变量模板,允许我们为常量、对象或者其他值定义泛型版本,从而可以编写更加通用且复用性高的代码。原创 2024-05-17 09:30:00 · 409 阅读 · 0 评论 -
C++14 新特性:Lambda 参数 auto
C++14 中引入的允许 Lambda 表达式接收auto类型参数的特性,提高了 Lambda 表达式的灵活性和泛型编程能力。这样 Lambda 表达式不仅仅局限于处理特定类型的数据,而是可以应用于更广泛的场景,促进了代码的重用和简洁性。原创 2024-05-17 09:30:00 · 591 阅读 · 0 评论 -
C++14 新特性:函数返回值类型推导
函数返回值类型推导是 C++14 一个重要的特性,它简化了函数声明,特别是在返回类型不明确或比较复杂时。原创 2024-05-16 09:30:00 · 489 阅读 · 0 评论 -
C++11 新特性:完美转发
接上篇文章,这篇介绍完美转发(Perfect Forwarding),这是一个高级特性,旨在解决函数模板中参数转发时可能出现的效率和正确性问题。完美转发允许我们将函数的参数以原始状态(包括其值类别,即是左值还是右值)传递给其他函数或构造函数,这在编写通用代码和库时特别重要。原创 2024-05-13 09:30:00 · 2225 阅读 · 0 评论 -
C++11 新特性:移动语义
C++11 引入的移动语义是对 C++ 语言的一大改进,它提供了一种更有效的资源管理方式,特别是在处理大量数据或资源密集型对象时。移动语义通过引入右值引用(Right-Value Reference,标记为&&)和两个新的构造函数——移动构造函数(Move Constructor)和移动赋值运算符(Move Assignment Operator)——来实现。这些新特性允许开发者优化程序性能,减少不必要的对象拷贝,从而提高效率。原创 2024-05-12 09:30:00 · 1057 阅读 · 0 评论 -
C++11 新特性:右值引用
右值引用和移动语义是 C++11 标准引入的重要改进之一,为开发者提供了一个能写出更高效的代码语言特性,特别是在涉及大量资源管理和临时对象的场景。原创 2024-05-11 09:30:00 · 1259 阅读 · 0 评论 -
C++11 新特性:再谈 std::weak_ptr 的用法
std::weak_ptr 提供了一种机制,来观察和跟踪所管理的对象,而不延长其生命周期。这在解决循环引用、实现观察者模式、以及在特定场景下管理缓存时非常有用。原创 2024-05-10 09:30:00 · 1307 阅读 · 1 评论 -
C++11 新特性:智能指针的用法
智能指针是现代 C++ 编程中管理资源和避免内存泄露的重要工具。非常适合用于管理资源的生命周期,如动态分配的内存、文件句柄等,下面我们通过示例代码来逐一说明智能指针的用法。原创 2024-05-09 09:30:00 · 444 阅读 · 0 评论 -
C++11 新特性:更强大的智能指针
C++11 智能指针的引入和改进,对 C++ 内存管理提供了现代化的、安全的机制,替代了裸指针和旧式的。通过使用和,C++ 程序员可以更轻松地编写安全、健壮的代码,避免内存泄露和指针悬挂问题。此外,和 C++14中 的提供了便捷和安全的方式来创建智能指针实例。原创 2024-05-08 09:30:00 · 354 阅读 · 0 评论 -
C++11 新特性:Lambda 捕获列表
Lambda 表达式的捕获列表定义了从定义 Lambda 的封闭作用域捕获哪些变量,以及如何捕获这些变量(通过值或引用)。捕获列表使得 Lambda 表达式能够访问并操作定义它的作用域之外的变量。原创 2024-04-30 09:00:00 · 454 阅读 · 0 评论 -
C++11 新特性:Lambda 表达式
C++11 引入的 Lambda 表达式是一种方便快捷的定义匿名函数对象的方式。Lambda 表达式允许在需要函数对象的地方直接定义和使用匿名函数,极大地提高了C++编程的灵活性和表达力。原创 2024-04-29 09:00:00 · 259 阅读 · 0 评论 -
C++11 新特性:多线程支持 - 异步操作的执行策略
std::async 函数用于异步执行一个任务,返回一个对象,该对象最终将持有函数的返回值,std::async可以接受一个启动策略作为其第一个参数,这些策略决定了任务的执行方式。原创 2024-04-26 09:00:00 · 290 阅读 · 0 评论 -
C++11 新特性:多线程支持 - std::atomic 原子操作
std::atomic是C++11中引入的一个模板类,用于实现原子操作,即在多线程环境下不可被中断的操作。这对于保证并发编程中数据的一致性和线程安全至关重要。原创 2024-04-25 09:00:00 · 659 阅读 · 0 评论 -
C++11 新特性:多线程支持 - notify_all 的用法
C++11 notify_all 方法用于唤醒所有等待该条件变量的线程,是在某些条件变化对所有等待线程都是有意义时的理想选择。原创 2024-04-24 10:00:00 · 784 阅读 · 0 评论 -
C++11 新特性:多线程支持 - 条件变量
为C++提供了一种强大的线程同步机制,特别适用于需要等待特定条件成立的场景。原创 2024-04-23 18:54:48 · 235 阅读 · 0 评论 -
C++11 新特性:多线程支持 - std::timed_mutex
可以让线程在等待获取互斥量的过程中考虑超时,这对于需要避免长时间等待的场景特别有用。原创 2024-04-19 09:00:00 · 596 阅读 · 0 评论 -
C++11 新特性:多线程支持 - 互斥锁
C++11 的多线程库为开发者提供的线程同步工具,包括各种类型的锁。今天介绍的是最简单、最常用的互斥锁,最后一个示例用到了条件变量和它的通知机制,这个我后面文章会介绍其用法。通过上述示例,我们可以看到如何在实际编程中利用这些锁来保护共享数据,避免数据竞争和死锁等问题,确保程序的正确性和稳定性。原创 2024-04-18 09:00:00 · 394 阅读 · 0 评论 -
C++11 新特性:多线程支持 - 线程管理
本文介绍 C++11 中线程的创建、等待和分离的使用,通过代码示例展示它们的用法。原创 2024-04-17 09:00:00 · 288 阅读 · 0 评论 -
C++11 新特性:多线程支持概述
C++11 引入了对多线程的原生支持,这是一个重大的改进,使得众多开发者翘首以盼的并发编程成为 C++ 语言的一部分。在 C++11 之前,开发者需要依赖于操作系统提供的 API 或第三方库来实现多线程。C++11 通过在标准库中添加了多线程支持,简化了多线程程序的编写,并提高了代码的可移植性和开发效率。后续我会通过几篇文章介绍多线程支持的一些细节,当然也不是完全描述,毕竟要覆盖多线程的各个方面,足够写一本书了。原创 2024-04-16 09:00:00 · 433 阅读 · 0 评论 -
C++11 新特性:新增算法
这些新增的算法增强了 C++ 的标准库,为开发者提供了更多的工具来编写高效和简洁的代码。通过利用这些算法,可以减少手写的代码量,同时也可以保证代码的性能和可读性。原创 2024-04-15 09:00:00 · 601 阅读 · 0 评论 -
C++11 新特性:正则表达式
C++11 引入的正则表达式库为 C++ 程序员提供了一个强大且灵活的工具,用于执行复杂的文本处理任务。利用这些特性,开发者可以高效地处理和分析文本数据,解决了 C++ 处理文本的部分痛点。原创 2024-04-14 00:09:56 · 1530 阅读 · 0 评论 -
C++11 新特性:更强大的随机数功能
C++11 中引入的随机数库大大增强了随机数生成的能力和灵活性,解决了 C++11 之前依赖rand()的种种问题。使用 C++11 提供的多种随机数引擎和分布,开发者可以根据具体需要,生成高质量的随机数,满足加密、模拟、游戏开发等多种场景的需求。原创 2024-04-13 10:00:00 · 342 阅读 · 0 评论 -
C++11 新特性:tuple 元组
std::tuple是 C++11 中引入的一种非常有用的类型,它通过组合多个可能不同类型的值为一个单一对象,为 C++ 编程提供了极大的灵活性和方便性。std::tuple的内部实现复杂,但它提供了简单的接口用于创建、访问和操作多个数据,从而使得处理多返回值、参数传递和数据组织等编程任务变得简单和直观。随着结构化绑定的引入(C++17),操作元组变得更加易于管理和阅读。原创 2024-04-12 01:50:31 · 1621 阅读 · 0 评论 -
C++11 新特性:std::unordered_set 无序集合
std::unordered_set 是 C++11 中引入的基于哈希表的集合容器,它支持快速的元素查找、插入和删除操作。理解的内部实现可以帮助开发者更有效地使用它,特别是在需要高效管理一组唯一元素的场景下。原创 2024-04-12 09:00:00 · 1249 阅读 · 0 评论 -
C++11 新特性:std::unordered_map 无序映射
std::unordered_map 是 C++11 中引入的一个非常有用的容器,特别是在需要快速查找、插入和删除键值对的场景下。它通过提供平均常数时间复杂度的操作,帮助开发者编写更高效的代码。不过,使用时需要注意,由于其基于哈希表实现,元素的存储顺序是不确定的。原创 2024-04-11 09:00:00 · 1929 阅读 · 0 评论 -
C++11 新特性:std::forward_list 前向列表
std::forward_list 是 C++11 中引入的一个高效的单向链表容器,它提供了灵活的元素管理方法,适用于需要频繁进行插入和删除操作的场景。由于其内部实现只维护单向链接,在空间使用上比std::list更加高效。通过合理利用提供的方法,可以在保证性能的同时,编写出清晰、简洁的代码。原创 2024-04-10 09:00:00 · 369 阅读 · 0 评论 -
C++11 新特性:std::array
std::array是 C++11 中引入的容器类型,它封装了固定大小的数组,提供了类似于 STL 容器的接口,同时保持了 C 风格数组的性能特性。与普通数组相比,std::array更安全、更易于使用,并且支持迭代器。原创 2024-04-09 22:49:32 · 366 阅读 · 0 评论 -
C++11 新特性:STL 新增数据结构
C++11 通过引入这些新的数据结构,不仅增强了 C++ 的标准库,还提高了C++编程的便利性和效率。这些数据结构各有特点,适用于不同的场景,如std::array提供了比原始数组更安全的固定大小数组,提供了更高效的单向链表实现,和提供了基于哈希表的集合和映射,std::tuple则为多种类型的值提供了便捷的封装。通过合理利用这些数据结构,可以使 C++ 程序更加灵活。原创 2024-04-08 11:26:40 · 345 阅读 · 0 评论 -
C++ 11 新特性:内存对齐 alignof 和 alignas
C++11 中的内存对齐特性提供了直接控制数据对齐的能力,这对于优化程序性能、减少 CPU 访问内存的开销非常重要。通过合理使用alignof和alignas,开发者可以在需要时显著提升数据访问速度,尤其是在性能敏感的应用程序中。当然,也要注意合理选择对齐大小,避免不必要的内存浪费。原创 2024-04-07 16:17:28 · 2055 阅读 · 0 评论 -
C++11 新特性:long long 超长整数类型
long long是 C++11 中引入的整数类型,它们至少提供 64位 的整数存储能力,极大地扩展了 C++ 程序可以处理的整数范围。这使得 C++ 程序能够更容易地处理大整数,同时保持良好的跨平台兼容性。原创 2024-04-06 16:32:55 · 3781 阅读 · 0 评论 -
C++11:explicit 关键字
在 C++ 中,explicit关键字用于防止类的构造函数或转换运算符进行隐式类型转换。默认情况下,如果一个构造函数只需要一个参数,或者一个转换运算符只转换为一个特定类型,编译器会自动使用它们进行隐式转换。虽然这可以使代码更加简洁,但有时也会导致意料之外的行为,尤其是在类型转换不明显或不期望发生时。通过在构造函数或转换运算符前添加explicit关键字,可以要求编译器只在显式转换时使用这些函数,从而增加代码的清晰度和安全性。原创 2024-04-04 11:20:03 · 408 阅读 · 0 评论 -
C++11 新特性:非受限联合体
C++11 中引入的非受限联合体,极大地增强了联合体的功能和灵活性,允许在联合体中使用具有复杂行为的类类型。这样联合体不仅仅可以用于传统的用途(如类型节省和类型重解释),还可以用于更复杂的场景,如状态管理和变体类型的实现。原创 2024-03-25 13:12:26 · 518 阅读 · 0 评论 -
C++11 新特性:enum class 关键字
enum class为 C++ 枚举类型提供了更强的作用域控制和类型安全性,是现代 C++ 编程中推荐使用的枚举定义方式。通过使用enum class,可以避免命名冲突,提高代码的可读性和安全性,同时也使得枚举类型的使用更加灵活和强大。原创 2024-03-24 13:23:02 · 783 阅读 · 0 评论 -
C++11新特性:sizeof... 运算符
sizeof...运算符在 C++11 及其后续版本中为模板编程提供了强大的工具,使得编译时计算参数包大小成为可能。这不仅可以用于简单的数量计算,还可以配合递归模板元编程、编译时断言等技术,实现更复杂的编译时逻辑。通过合理利用sizeof...,开发者可以编写出更灵活、高效的模板代码。原创 2024-03-24 13:18:41 · 341 阅读 · 0 评论 -
C++11 新特性:default 和 delete
C++11 中引入的default和delete关键字,为类设计提供了更大的灵活性和控制力。通过显式地声明类的特殊成员函数为默认或删除,开发者可以更精确地指定类的行为,使得类的设计意图更加明确,同时也提高了代码的可读性和维护性。原创 2024-03-24 13:09:43 · 349 阅读 · 0 评论 -
C++11新特性:自定义字面量
自定义字面量通过定义一个特殊的字面量运算符来实现。这个运算符以operator""为前缀,后跟一个唯一的标识符。根据字面量的类型(整数、浮点数、字符、字符串或布尔值),这个运算符可以有不同的形式。C++11 中引入的用户定义字面量为类型安全和代码可读性提供了强大的支持。原创 2024-03-22 23:48:26 · 860 阅读 · 0 评论 -
C++11 新特性:继承构造函数
C++11 中引入的继承构造函数特性极大地简化了派生类的编写,通过允许派生类自动继承基类的构造函数,减少了代码的重复和维护成本。这提高了代码的复用性和可维护性,使得基于类的继承更加灵活和强大。原创 2024-03-23 09:00:00 · 846 阅读 · 0 评论