刷新
性能优化陷阱之hash真的比strcmp快吗

博主头像 最近网上冲浪的时候看到有人分享了自己最近一次性能优化的经验。我向来对性能是比较敏感的,所以就点进去看了。 然而我越看越觉得蹊跷,但本着“性能问题和性能优化要靠性能测试做依据”,我不能凭空怀疑别人吧,所以我做了完整的测试并写下了这篇文章。 可疑的优化方案 分享者遇到的问题很简单:他发现程序中超过一半的 ...

【老鼠看不懂的数据结构】FHQTreap 初识

Treap 弱平衡的随机性很强的老鼠看不懂的平衡树 Q:为什么叫 Treap? A:看看二叉搜索树(BST)和堆(Heap),组合起来就是 Treap 其中,二叉搜索树的性质是: 左子节点的值 (val) 比父节点小 右子节点的值 (val) 比父节点大 如果这些节点的值都一样,这棵树就会退化成一颗 ...

数组降维、函数栈帧、地址空间、可变参数原理剖析 (万字)

博主头像 目录数组和指针多维数组的物理结构证明数组a和&a不同数组与指针的差别之一什么时候数组名表示整个数组?数组训练理解指针与数组的题所有的数组,都可以看成一维数组.所有的数组传参,最终都会降维成一维数组函数函数的地址函数的规范内存管理malloc返回给用户的只有申请内存的起始地址,那free是如何准确释放 ...

C语言预处理过程中语法的实用方法与技巧 (万字)

博主头像 预处理 目录预处理一、宏定义数值宏常量字符串宏常量用define宏定义注释符号?程序的编译过程预处理中宏替换和去注释谁先谁后?如何写一个更可靠的宏函数do-while-zero结构do-while-zero的评价宏定义中的空格宏只能在main函数上面定义吗?宏的作用范围#undef宏替换是在函数调用 ...

Qt学习第二篇(基本小组件的使用)

博主头像 Qt_2 小部件是 GUI 的基本元素。 它也称为UI 控件。 它接受来自底层平台的不同用户事件,如鼠标和键盘事件(以及其他事件)。 我们使用不同的小部件创建 UI。 曾经有一段时间,所有的 GUI 控件都是从头开始编写的。 Qt 小部件通过开发具有现成的 GUI 控件的桌面 GUI 来缩短时间,并 ...

C++基础篇

博主头像 输入输出流iostream 向流写入数据<<运算符 <<运算符接受两个运算对象,此运算符将给定的值写到给定的ostream对象中: 左侧:运算对象为ostream对象,如cout、cerr、clog 右侧:运算对象是要打印的值 输出结果:写入给定值的那个ostream对象,即此运算符返回其左侧的运算 ...

cpp的lambda表达式

博主头像 在C++中,lambda表达式提供了一种方便的方式来定义匿名函数。Lambda可以用来创建简单的函数对象,常用于算法库中的函数参数,特别是在STL(Standard Template Library)中。 Lambda表达式的语法是这样的: [ capture ] ( parameters ) -> ...

深入探究C++ 类成员(Class Members)

博主头像 一、定义 在class的声明里头,真正有用的两样东西是data members 和 member functions: Data members:表示根据这个class所产生的object里头会有些什么东西,它事实上也是占据object内存的唯一东西(除非引入虚拟机制)。通常为数据的封装性,我们把d ...

对C语言符号的一些冷门知识运用的剖析和总结 (万字)

博主头像 符号 目录符号注释奇怪的注释C风格的注释无法嵌套一些特殊的注释注释的规则建议反斜杠'\'反斜杠有续行的作用,但要注意续行后不能添加空格回车也能起到换行的作用,那续行符的意义在哪?反斜杠的转义功能单引号和双引号字面值,字符串,字符,字符变量的大小为什么sizeof('1')的大小是4 ?char类型一 ...

C++ lambda的重载

博主头像 先说结论,lambda是不能重载的(至少到c++23依旧如此,以后会怎么样没人知道)。而且即使代码完全一样的两个lambda也会有完全不同的类型。 但虽然不能直接实现lambda重载,我们有办法去模拟。 在介绍怎么模拟之前,我们先看看c++里的functor是怎么重载的。 首先类的函数调用运算符是可 ...

Qt学习第一篇(windows下安装和代码规范)

博主头像 Qt_1 Qt Creator 是 Qt 公司生产的 IDE。 它集成了多个工具,包括代码编辑器、图形 UI(GUI)设计器、编译器、调试器、Qt 设计器、Qt 快速设计器和 Qt 助手等。 Qt Designer 帮助设计基于小部件的 GUI,而 Qt Quick Designer 提供了在设计模 ...

提高安全性,优雅实现拷贝与交换:C++中的Copy-and-Swap惯用法

博主头像 概述:拷贝并交换(Copy-and-Swap)是C++编程中的惯用法,用于实现赋值操作符和确保异常安全的拷贝构造函数。其核心思想是通过拷贝构造函数创建临时副本,再通过交换确保操作的异常安全性。这种方法在C++11之前和之后都适用,但在C++11中,移动语义和右值引用的引入使得实现可以更加高效。 拷贝 ...

<1···456···31>