map和unordered_map小记
引言在C++标准库中,map和unordered_map是两个常用的关联容器,它们都提供了键值对的存储和查找功能,但在底层实现和使用特性上却有着本质的区别。map基于红黑树实现,保证了元素的有序性,而unordered_map基于哈希表实现,追求更快...
引言在C++标准库中,map和unordered_map是两个常用的关联容器,它们都提供了键值对的存储和查找功能,但在底层实现和使用特性上却有着本质的区别。map基于红黑树实现,保证了元素的有序性,而unordered_map基于哈希表实现,追求更快...
位运算作为计算机最底层的操作之一,其高效性源于直接对整数的二进制表示进行操作。在C++编程中,巧妙运用位运算往往能显著提升算法性能、简化代码逻辑,特别是在处理集合操作、状态压缩和性能敏感场景时表现突出。 我一直觉得位运算是个很有意思的话题。它连接了高...
还是得勇敢直面我不会的东西。 上一篇整理了一些malloc和free相关的知识点。今天主要来看new和delete。 问起new和delete,我目前能说出来的有以下这些:new操作是在malloc申请到内存后,在申请到的内存上去调用对象的构造函数去...
今天首先很讨厌自己学了也有一阵C++了但是感觉如果让我说的话还是支支吾吾不知从何说起。感觉就是所有关键词知识点都在抢占大脑输出通道,没有逻辑章法。 第二个讨厌的就是malloc失败了假装自己没事,原因就是只返回一个void*类型,还得我们自己做一次检...
今天来学学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,随机尝试>或者>=,拆了东墙补西墙,怎么堵都堵不明白。细节太多了,各种写法层出不穷,开区间的,闭区间的,左开右闭的,左闭右开的。找...