
c++
文章平均质量分 57
却道天凉_好个秋
这个作者很懒,什么都没留下…
展开
-
c++ 嵌入汇编的方式实现int型自增
x86 平台上,使用LOCK XADDlock xaddl+m(*value)+m"1"(1)1memory在 ARM(32 位)上,使用ldrex和strexldrexresultaddstrexvaluestrexteq %1, #0strex在 ARM64(64 位)上,可以使用ldxr和stxrldxrvaluestxrvaluecbnzstxr。原创 2025-03-09 22:25:51 · 337 阅读 · 0 评论 -
c++ gcc工具链
目标推荐优化选项开发调试-Og -g一般优化-O2极限优化小代码体积浮点运算优化多线程优化任务命令安装 ARM 交叉编译器编译 ARM 64 可执行文件编译静态库编译动态库QEMU 运行 ARM 程序远程 GDB 调试。原创 2025-02-16 21:46:18 · 998 阅读 · 0 评论 -
c++ CPU指令集和优化选项
Intel 处理器优化的关键是利用其支持的高级指令集(如 AVX、AVX2、SSE 等),并通过合适的编译器选项让程序充分发挥硬件性能。在 Makefile 中,可以通过设置。原创 2025-02-13 21:51:01 · 1130 阅读 · 0 评论 -
c++ CMakeLists.txt详解
LANGUAGESCCXXFortranbinlibetc子模块的。原创 2024-12-11 22:56:19 · 1608 阅读 · 0 评论 -
c++ 梅森旋转随机数生成器类(32位和64位)
private:// 状态向量大小// 捻转参数// 常量// 高位掩码// 低位掩码// 状态向量int index;// 混合两个整数public:index = N;i < N;= 0) { // x 的最低位为1index = 0;// 后处理提高随机性return y;// 使用种子初始化i < 10;原创 2024-12-09 11:31:32 · 552 阅读 · 0 评论 -
c++ c++11之后的std::vector
本文主要介绍c++11之后std::vector的增强与特点。原创 2024-12-08 21:44:02 · 355 阅读 · 0 评论 -
c++ 数据结构:图
图由。原创 2024-12-08 11:38:24 · 1159 阅读 · 0 评论 -
c++ 环形缓冲区(RingBuffer)
环形缓冲区(Circular Buffer)与环形队列类似,是一种数据结构,支持在固定容量下的高效读写操作。相比队列,环形缓冲区通常允许覆盖旧数据,这在某些场景(如实时数据流、日志处理)中非常有用。原创 2024-12-03 16:27:51 · 709 阅读 · 0 评论 -
c++ AC自动机
AC 自动机(Aho-Corasick 自动机)是一种高效的字符串匹配算法,特别适用于从文本中同时查找多个模式串的场景。它结合了(前缀树)和。原创 2024-12-03 15:15:25 · 467 阅读 · 0 评论 -
c++ A*搜索算法
A*的核心是选择具有最低 f(n)值的节点进行扩展,从而在保证正确性的同时提高效率。原创 2024-12-01 22:29:39 · 389 阅读 · 0 评论 -
c++ 位图和布隆过滤器
布隆过滤器是一种基于位图的概率性数据结构,用于判断某个元素是否在集合中。它可能存在假阳性(误判元素存在),但不会有假阴性(漏判元素不存在)。原创 2024-12-01 22:06:40 · 1150 阅读 · 0 评论 -
c++ 拓扑排序
拓扑排序是一种线性排序算法,主要用于中,对顶点进行排序,使得对于每一条边 u→v,顶点 u 都排在顶点 v之前。原创 2024-11-28 22:26:28 · 453 阅读 · 0 评论 -
c++ unordered_set和unordered_map
和是高效的容器,适合用于频繁查找、插入和删除操作的场景。适用于集合操作,适用于键值对操作。原创 2024-11-24 22:48:02 · 859 阅读 · 0 评论 -
c++ std::next总结
函数功能修改原始迭代器返回新迭代器std::next将迭代器向前移动n步否是std::prev将迭代器向后移动n步否是将迭代器向前或向后移动n步是否便捷获取目标位置的迭代器:无需手动调用迭代器的递增操作。与算法配合使用:例如在std::find或等算法中定位迭代器。安全性:不直接修改原始迭代器,提高代码的清晰度和可读性。原创 2024-11-22 22:12:44 · 512 阅读 · 0 评论 -
c++ std::stack总结
/ 自定义容器(必须支持 push_back, pop_back, back, size, empty)private:// 使用 deque 存储数据public:// 使用自定义容器作为底层容器s.push(42);s.push(84);// 输出 126s.pop();// 输出 84// 输出 2return 0;std::stack是一个非常简单且高效的容器适配器,适合处理需要后进先出(LIFO)顺序的场景。原创 2024-11-22 20:48:59 · 500 阅读 · 0 评论 -
c++ 栈
栈(Stack)是计算机科学中一种非常重要的数据结构,它是一种遵循(LIFO, Last In First Out)原则的数据结构,即最后放入栈中的元素最先被取出。原创 2024-11-20 22:24:36 · 437 阅读 · 0 评论 -
c++ 深度和广度优先搜索
深度优先搜索 (DFS):采用递归(或栈)策略,从根节点出发,一直深入到叶子节点。适合在树结构中需要访问每个节点的场景,如路径查找、图的遍历等。典型实现:前序、中序、后序遍历。广度优先搜索 (BFS):采用队列策略,从根节点开始,逐层访问节点。适合查找最短路径等场景,尤其在图算法中广泛应用。典型实现:层序遍历。原创 2024-11-19 23:06:53 · 625 阅读 · 0 评论 -
c++ 二叉树
(Binary Tree)是一种树形结构,每个节点最多有两个子节点。原创 2024-11-17 20:41:36 · 1105 阅读 · 0 评论 -
c++ 二分查找
类似于查找最左位置,我们也可以通过二分查找来找到目标值的最后一个出现位置。问题描述:给定一个升序排列的数组arr和一个目标值target,请找出target在数组中最后出现的位置。// 如果当前值等于目标值,则向右侧继续查找} else {// 检查 left 是否越界或值是否等于目标return -1;// 未找到目标值if (index!= -1) {cout原创 2024-11-13 22:42:37 · 494 阅读 · 0 评论 -
c++ 动态规划
动态规划是一种强大的算法设计技巧,通过优化子问题的解来减少重复计算,显著提升算法效率。常见的应用场景包括:最短路径、背包问题、字符串匹配、图算法等。原创 2024-11-12 22:37:57 · 655 阅读 · 0 评论 -
c++ floyd判圈算法
Floyd判圈算法,也称为Floyd的环检测算法或“龟兔赛跑算法”,是一种用来检测链表或序列中是否存在环的经典算法。它的主要思想是通过两个指针(一个快指针和一个慢指针)来判断链表中是否有环。原创 2024-11-10 21:26:31 · 225 阅读 · 0 评论 -
c++ 异或运算
是计算机中常用的位运算之一,符号为。原创 2024-11-10 20:10:49 · 718 阅读 · 0 评论 -
c++ 分治算法
分治算法是一种重要的算法设计范式,其核心思想是将一个复杂的问题分解为多个规模较小的相同问题,逐步解决这些较小的问题,最后将这些问题的解合并成原问题的解。原创 2024-11-08 22:52:46 · 1061 阅读 · 0 评论 -
c++ 回溯算法
回溯算法通过递归地构建解,并在发现当前路径不符合要求时回退并尝试其他路径。它非常适用于解空间较大。原创 2024-11-05 22:11:20 · 1238 阅读 · 0 评论 -
c++ 贪心算法
贪心算法虽然简单易懂,但并不是所有问题都适用。在实现贪心算法时,需要确保每一步的局部选择能够导向全局最优解。原创 2024-11-03 20:12:00 · 2021 阅读 · 0 评论 -
c++ trie树
Trie(也叫前缀树或字典树)是一种树形数据结构,主要用于快速检索字符串集合中的前缀匹配,常见于词典、自动补全、IP 路由等场景。原创 2024-10-27 21:16:57 · 450 阅读 · 0 评论 -
c++ 堆和堆排序
堆是一种高效的二叉树数据结构,适用于需要快速获取最大/最小值的场景。堆排序是一种原地排序算法,空间复杂度 O(1),但它是不稳定排序。应用场景广泛,如优先队列、Top K 问题和多路归并等。原创 2024-10-23 22:37:45 · 815 阅读 · 0 评论 -
c++ 散列表
散列表是一种高效且灵活的数据结构,适合用于需要快速查找和存储的场景。通过合理设计哈希函数和冲突处理策略,可以实现良好的性能。原创 2024-10-20 21:16:11 · 452 阅读 · 0 评论 -
c++ cpu亲缘性
CPU亲缘性是优化多线程程序性能的重要手段,能够提高缓存效率并减少上下文切换。根据操作系统的不同,使用不同的方法来实现亲缘性。在Linux上使用,而在Windows上使用。通过合理设置线程的CPU亲缘性,可以显著提升程序的性能。原创 2024-10-20 20:38:05 · 328 阅读 · 0 评论 -
c++ 跳表
时间复杂度:查找、插入、删除的期望时间复杂度为 O(logn)。空间复杂度:O(nlogn),因为每个节点可能会出现在多层中。跳表的实现简单且高效,常用于Redis等数据库的有序集合。原创 2024-10-16 21:42:46 · 516 阅读 · 0 评论 -
leveldb源码剖析(二)——LSM Tree
LSM Tree具有较高的写入性能,主要通过写入内存和磁盘顺序写实现;写入数据时,先将数据写入内存,当内存达到一定大小时,将内存中的数据一次性顺序写入(flush)磁盘,生成SSTable中一个segment,segment内部数据也是有序的;读取数据时,先查找布隆过滤器,如查询不到直接返回key不存在,如存在,继续查询稀疏索引表;查找稀疏索引表,根据查询到的范围从磁盘读取数据,进而利用二分法读取获取最终结果;原创 2024-09-04 22:37:41 · 1382 阅读 · 0 评论 -
leveldb源码解析(一)——编解码
leveldb中,数字的存储统一采用,通过对数字编码和压缩,节省了存储空间。原创 2024-09-03 21:27:07 · 331 阅读 · 0 评论 -
c++ 自旋锁、读写锁和可打断锁
【代码】c++ 自旋锁、读写锁和可打断锁。原创 2024-03-31 11:13:29 · 341 阅读 · 0 评论 -
c++ LRU(最近最少使用)缓存机制
【代码】c++ LRU(最近最少使用)缓存机制。原创 2023-11-22 21:22:11 · 204 阅读 · 0 评论 -
c++ 获取当前时间(精确至秒、毫秒和微妙)
表示时间的持续时间(Duration)原创 2023-11-20 22:32:33 · 8880 阅读 · 0 评论 -
c++ 线程安全的string类
c++标准未规定stl容器以及字符串的线程安全性,故std::string在多线程下是不安全的。原创 2023-10-29 09:04:32 · 861 阅读 · 0 评论 -
c++ tinyXml介绍
TinyXML是一个开源的解析XML的解析库。解析库的模型通过解析XML文件,在内存中生成DOM模型,使得可以方便的遍历XML。原创 2023-09-17 18:45:39 · 438 阅读 · 0 评论 -
c++——“LNK2001 无法解析的外部符号 _printf”问题解决方案
使用Visual Studio2019建立工程,依赖Visual Studio2015编译好的库(高版本的编译器依赖低版本编译的库)。原创 2023-08-31 22:52:59 · 1942 阅读 · 0 评论 -
c++ 使用sort排序
【代码】c++ 使用sort排序。原创 2023-08-14 21:37:20 · 136 阅读 · 0 评论 -
c++ 递归锁的使用
同一个线程里,在锁未释放的情况下反复加锁,会导致死锁。发现程序卡住不动,无Func函数中的打印。原创 2023-08-09 21:15:03 · 749 阅读 · 0 评论