刷新
【C++】多线程

博主头像 前言 实现多线程(win32 API、pthread、std::thread)、线程同步(互斥量、原子变量、读写锁、条件变量、线程局部存储)、如何调试。 多线程 线程:是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程 ...

【C++】回调函数

博主头像 前言 学习回调函数,回调函数是通过函数指针或对象调用的函数。 回调函数就是通过函数指针或对象调用的函数,只要能一个函数能够作为参数传入并调用,这个函数就是回调函数。 #include <iostream> int addCallBack(int a,int b){//回调函数 std::cout < ...

【C++】智能指针

博主头像 前言 学习C++智能指针。 指针(Pointer)就是一个变量,其存储的是另一个变量的内存地址,理解指针是掌握 C++ 内存管理、数组、对象以及底层操作的关键。 为什么使用指针 1. 动态内存管理:在运行时根据需要申请内存(使用 new 和 delete)。原生数组(如 int a[10])的大小在 ...

【C++】移动语义和完美转发

博主头像 前言 学习C++移动语义和完美转发笔记,记录左值、右值、std::move()、万能引用、引用折叠等相关内容。 概念 左值 (lvalue) 它是在内存中有明确存储地址、可以被寻址的值。如果你可以对一个表达式取地址(使用 & 运算符),那么它就是一个左值。左值通常是持久的,在它所在的定义域结束之前一 ...

C++ 中的构造函数

博主头像 深入理解 C++ 构造函数的本质:从资源管理到性能优化。涵盖默认构造、拷贝构造、移动构造,以及 RAII、explicit、constexpr 等关键机制。 ...

C++ 中的 list

博主头像 深入理解 C++ 中的 std::list 双向链表容器,探讨其底层原理、独有优势(如头部操作、接合等)、迭代器特性,以及与 std::vector 的选择权衡。 ...

override

博主头像 override 学过Java的小伙伴们应该不陌生,这个关键字就类似Java中的注解@override 确保在子类中声明的重写函数与基类的虚函数有相同的签名,同时也明确表明将会重写基类的虚函数,这样就可以保证重写的虚函数的正确性,也提高了代码的可读性; override和final一样这个关键字要写 ...

从源码角度解析C++20新特性如何简化线程超时取消

博主头像 C++20中增加了很多重量级新特性,它不仅带来了ranges、concept和协程,也为多线程编程带来了jthread和stop_source这些强力辅助。利用这些新特性,我们可以更高效地编写并发程序。 今天要说的就是利用jthread和stop_source来简化线程超时控制的实现,最终我们可以实 ...

LeetCode 1:两数之和(Two Sum)

博主头像 一、题目描述 原题 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。 你可以按任意顺序返回答案。 示例 示例 1: 输入:nums = [2 ...

C++ 语言特性的变更可能让你的防御成为马奇诺防线

博主头像 马奇诺防线 马奇诺防线是法国在1930年代修建的一道大型防御工事系统。防线由复杂的地下工事网络组成,包括炮台、掩体、地下兵营、弹药库和指挥所等设施,有些地下工事深达数十米。 然而,在1940年的法国战役中,它并未发挥预期作用,德军绕过马奇诺防线,通过比利时和阿登森林发动突袭,迅速击败了法军,这使得马 ...

类成员变量的初始化

博主头像 C++11中在初始化时可以使用 = ,也可以使用 {} ,也可以使用 ={} ; 需要注意的是:类中的静态成员变量只有静态常量,并且类型是整型或者枚举类型,才能在类内初始化,其他都得在类外初始化。 #include <iostream> using namespace std; class Base ...

long long

博主头像 C++11中加入long long 的整型,C++11 标准要求 long long 整型可以在不同平台上有不同的长度,但至少8字节(64位)。long long 整型有两种∶long long 和 unsigned long long //long long 对应类型的数值可以使用LL或者ll后缀 ...

原始字面量

博主头像 C++ 中存在转义字符,例如"\n"或"\t"。当我们尝试打印转义字符时,它们不会显示在输出中。为了在输出屏幕上显示转义字符,我们使用了"R(带转义字符的字符串)"作为原始字符串字面量。在字符串前面使用 R 后,转义字符将显示在输出中。 定义方式: R "xxx(原始字符串)xxx" 其中()两边的 ...

使用vscode编译C++代码

博主头像 使用vscode编译C++代码 vscode 首先要说明vscode不是IDE,因此本身没有所谓的一键配置、一键编译/调试、大量可视化项目操作选项等功能,实际上是一个拥有丰富插件且可定制化极高的文本编辑器。当我们创建完C++文件后按照在IDE(VS2022等)思路下会下意识的使用快捷键一键编译运行, ...

K-D Tree 相关

博主头像 部分发表于洛谷。 简介: K-D Tree 是一种适用于 \(k\) 维空间信息处理的数据结构,一般是维护 \(n\) 个点的信息,建出平衡二叉树;在 \(k\) 比较小的 建树: 一般使用交替建树,递归的分为以下三个步骤: 交替选择一个维度切割(即 \(x, y, z, \cdots\) 依次切一 ...

C++自学之路1:Hello world

博主头像 C++ 语法基础 本文主要通过Hello world这样一个简单的c++程序来认识C++的基础语法框架 本文内容主要来自OI wiki #include <iostream> // 引用头文件 int main() // 定义 main 函数 { std::cout << "Hello, world ...

代码随想录Day25_回溯5_全排列

博主头像 非递减子序列 问题描述 给了一个数组,要求给出其所有长度>=2的非递减子序列。 思路 压入结果的条件是path.size()>=2,回溯过程结束的条件是移动到了边上startIndex>=num.size() 在树中,非递减序列,要求压入的元素必须比之前压入的大:if(path.empty()||n ...

<123···9>