map和unordered_map小记

引言在C++标准库中,map和unordered_map是两个常用的关联容器,它们都提供了键值对的存储和查找功能,但在底层实现和使用特性上却有着本质的区别。map基于红黑树实现,保证了元素的有序性,而unordered_map基于哈希表实现,追求更快...

位运算小甜品

位运算作为计算机最底层的操作之一,其高效性源于直接对整数的二进制表示进行操作。在C++编程中,巧妙运用位运算往往能显著提升算法性能、简化代码逻辑,特别是在处理集合操作、状态压缩和性能敏感场景时表现突出。 我一直觉得位运算是个很有意思的话题。它连接了高...

new和delete(一)new与构造函数与各种初始化大乱炖

还是得勇敢直面我不会的东西。 上一篇整理了一些malloc和free相关的知识点。今天主要来看new和delete。 问起new和delete,我目前能说出来的有以下这些:new操作是在malloc申请到内存后,在申请到的内存上去调用对象的构造函数去...

malloc失败假装没事谁信(malloc内存分配相关总结整理)

今天首先很讨厌自己学了也有一阵C++了但是感觉如果让我说的话还是支支吾吾不知从何说起。感觉就是所有关键词知识点都在抢占大脑输出通道,没有逻辑章法。 第二个讨厌的就是malloc失败了假装自己没事,原因就是只返回一个void*类型,还得我们自己做一次检...

LRU把最老的赶出门犯法吗

今天来学学LRU在UE5.6引擎里的实现,之前会写大致的LRU算法,也没太关注内存有没有泄漏什么的。顺带学学C++的RAII,深入理解一下。 代码文件在此: 1Engine/Source/Runtime/Core/Public/Containers/...

进程和线程到底有什么区别

说来惭愧。每次看到这个问题,就只能想到“进程拥有资源,线程拥有cpu”之类一点不严谨的描述,两年前学的408现在忘得差不多了,导致每次看到这些问题,总感觉有万匹飞奔的载着408知识的野马从我的大脑皮层轻轻掠过。 首先,想得确实没错。进程是资源分配的基...

如何只在栈上或只在堆上创建类

如何只允许在堆上创建类?第一种思路,就是构造函数私有化,如下: 1234567891011121314#pragma onceclass OnlyOnHeap{public: ~OnlyOnHeap() = default;private:...

多继承类的虚函数表会有几张?

对于多继承类的理解,我一直感到疑惑。为什么要使用多继承呢?为什么不用组合呢?这个疑惑一会儿再来解答。今天先来探索一下多继承类下,虚函数表与虚函数表指针在内存布局的情况。 在运行任何测试代码之前,我先提出我目前的理解。如果先不考虑有菱形继承的情况。我们...

又谈右值引用与移动构造函数

感觉又来谈谈右值引用了,这次带上了移动构造函数一起谈。初学移动构造函数时,我看到的大致能总结成这么一句话:资源的转移而非拷贝。由于我初学C++(之前写算法题不能算学了C++),很多隐藏的东西我很难搞懂,很多描述令我抓耳挠腮:有的描述说,右值引用可以延...

细拆二分法

这两周学到了二分相关,思想听起来颇为简单,实际写起来漏洞百出,如果是面向测试案例编程的话,经常胡乱+1-1,随机尝试>或者>=,拆了东墙补西墙,怎么堵都堵不明白。细节太多了,各种写法层出不穷,开区间的,闭区间的,左开右闭的,左闭右开的。找...

12