C++
文章平均质量分 94
C++语法,STL原理
_宁清
Off To A Great Start
展开
-
【C++11】线程库 | 互斥量 | 原子性操作 | 条件变量
C++11中最重要的特性就是对线程进行支持了,使得C++在并行编程时不需要依赖第三方库,而且在原子操作中还引入了原子类的概念。要使用标准库中的线程,必须包含头文件。线程是操作系统中的一个概念,线程对象可以关联一个线程,用来控制线程以及获取线程的状态。原创 2024-05-09 18:09:50 · 895 阅读 · 0 评论 -
【C++11】lambda表达式 | 函数包装器
lambda表达式是一个可调用对象,是一个无名函数,一个lambda表达式可以被赋值给对象,或者直接使用auto类型推导。是一个通用的函数封装器,它可以包装任意可调用对象,包括函数指针、函数对象、成员函数指针以及lambda表达式。lambda表达式提高了代码的可读性。原创 2024-02-23 18:07:12 · 1047 阅读 · 1 评论 -
【C++】C语言可变函数参数 | C++11可变参数模板
C语言使用stdarg.h来实现可变函数参数,通过va_listva_startva_arg和va_end宏进行操作。C++使用模板参数包来实现可变模板参数,可以利用递归、逗号表达式展开参数包处理不同数量的参数。原创 2024-02-23 17:54:49 · 1122 阅读 · 1 评论 -
C语言和C++的类型转换
C语言类型强转存在缺陷:转换的可视性比较差,所有的转换形式都是以一种相同形式书写,难以跟踪错误的转换。因此标准C++为了加强类型转换的可视性,引入了四种命名的强制类型转换操作符:`static_cast`、`reinterpret_cast`、`const_cast`、`dynamic_cast`原创 2024-02-20 16:35:21 · 1077 阅读 · 3 评论 -
【C++11】右值引用 | 移动构造&赋值 | 万能引用 | 完美转发
传统的C++语法中就有`引用`的语法,而C++11中新增了的右值引用语法特性,所以从现在开始,为了与`右值引用(rvalue reference)`区分开来,我们可以称之为`左值引用 (lvalue reference)`。无论左值引用还是右值引用,都是给对象取别名。原创 2024-02-08 22:13:10 · 1124 阅读 · 2 评论 -
【C++11】统一初始化 和 initializer_list
C++11扩大了用大括号括起的列表(初始化列表)的使用范围,使其可用于所有的内置类型和自定义类型。统一初始化是语法层面的,initializer_list是标准库提供的对语言层面的初始化列表的封装。原创 2024-02-07 01:14:37 · 1800 阅读 · 2 评论 -
C++11简介
C++语言已经今非昔比,几乎是一种全新语言了,我们非常需要拥抱变化,使自己适应C++的崭新时代。原创 2024-02-07 00:55:10 · 435 阅读 · 0 评论 -
【C++】异常
实际使用中很多公司都会自定义自己的异常体系进行规范的异常管理,因为一个项目中如果大家随意抛异常,那么外层的调用者基本就没办法玩了,所以实际中都会定义一套继承的规范体系。这样大家抛出的都是继承的派生类对象,捕获一个基类就可以了。原创 2024-02-02 21:07:23 · 1450 阅读 · 4 评论 -
【C++ | 数据结构】从哈希的概念 到封装C++STL中的unordered系列容器
尽管平衡二叉搜索树的查找方式已经很快了,但我们仍然认为该方法不够极致,理想的搜索方法:可以不经过任何比较,一次直接从表中得到要搜索的元素。这就是哈希表。原创 2024-01-21 23:52:23 · 1299 阅读 · 0 评论 -
【C++】类和对象
C++使用类,将方法和数据进行封装,隐藏了实现细节。本文解读C++中的类的概念,学习面向对象的编程思想。原创 2023-08-01 19:26:50 · 70 阅读 · 1 评论 -
【C++】特殊类设计
介绍了如何在C++98和C++11中设计各种特殊的类。原创 2024-01-16 18:06:24 · 1203 阅读 · 2 评论 -
【C++】多态的原理
多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。本文从虚函数和虚函数表入手,用代码和调试工具实践并解释了C++的多态何以实现。原创 2023-12-09 17:51:46 · 925 阅读 · 1 评论 -
【C++ | 数据结构】从 AVL 树、红黑树到 C++ STL 中的 Map 与 Set 实现
探讨了搜索二叉树的基本概念,然后深入研究了 AVL 树和红黑树这两种常用的优化方案。在 C++ STL 中,Map 和 Set 是两个基于红黑树实现的重要容器。我们模拟了它们的基本实现过程,了解了底层数据结构的运作原理。原创 2023-12-06 13:14:12 · 953 阅读 · 1 评论