随笔分类 - C++
摘要:本文使用C++实现一个基于AVLTree实现的map/set,不同于网上大部分的实现,本文争取按照C++STL风格来编写。 前言 其实网上关于数据结构的文章已经满大街了,但是大多数的实现都非常简单,虽然有些使用Java/C#/Python版本的代码甚至可能和其标准库相差无几,但是C++不一样,C++
阅读全文
摘要:C++如何写一个带有allocator的vector 在STL中,容器一般都有一个allocator模板参数。 allocator用于获取/释放内存及构造/析构内存中元素的分配器。类型必须满足分配器 (Allocator) 。如果 Allocator::value_type 与 T 不同,那么行为未
阅读全文
摘要:如何编写一个128位的整数 现在的大部分的计算机编程语言都包含了64位的有符号整数和无符号整数,有的甚至还提供了128位的整数和大数,比如: : System.Int128, System.UInt128 : i128, u128 但是在C/C++中并未发现uint1
阅读全文
摘要:C++如何实现容器的Copy/Move/Swap方法 1、引言 目前网上有很多关于如何编写C++容器的教程,比如各种“手写STL”之类的文章和视频,但是这些教程中的容器一般都不包括allocator,比如: template <typename T> class MyVector { ... };
阅读全文
摘要:以前刚学C++是书上说引用是变量的别名,这个说法感觉不能很好的理解引用的本质,加上C++和java等其他语言的引用也不完全一样感觉还是要比较实际代码才行。 在这里简单比较一下引用和指针在汇编代码上的的区别: 编译器: x86-64 gcc 9.3c++标准: -std=c++17不做任何优化 在线编
阅读全文
摘要:#include <iostream> using namespace std; constexpr int MEMORYPOOL_ALIGNMENT = 8; //对齐长度 // 内存块 template<typename _T> struct MemoryBlock { int nSize; /
阅读全文