logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

C++:智能指针完全指南(原理、用法与避坑实战,从 RAII 到循环引用)

auto_ptr:是 C++98 时设计出来的智能指针,特点是拷贝时把拷贝对象的资源的管理权转移给拷贝对象,这是一个非常糟糕的设计,因为它会导致被拷贝对象悬空、访问报错的问题。C++11 设计出新的智能指针后,强烈建议不要使用auto_ptr,实际上在 C++11 出来之前很多公司也是明令禁止使用这个智能指针的。unique_ptr:是 C++11 设计出来的智能指针,名字翻译为 “唯一指针”。特

#c++#开发语言#算法
C++:vector(从三指针模型到手写完整实现)

public:--我们这里迭代器的使用可以测试一下,实现的打印函数我就直接放上去了,之前讲过test.c:i++)//v[0]++;v[0]++;Print(v);若 vector 存储的是含指针的自定义类型(如 string),直接用 memcpy 拷贝会导致多个对象共享内存,析构时双重释放。本文实现的 reserve 和拷贝构造均用移动 / 拷贝构造函数迁移元素,避免了这一问题。

#c++#开发语言
C++:手把手实现 STL Set/Map(从零编写一棵红黑树到完整容器封装)

由于 T 的类型不固定(K 或 pair),红黑树插入 / 查找时无法直接获取 key,需通过仿函数。map支持[]主要修改insert返回值支持,修改RBTree中的insert返回值为。这里实现一下,- - 的话就不展示了,要实现的话还需要额外带一个_root;STL 中 map 和 set 复用同一颗红黑树的核心是。SGI-STL30版本源代码,map和set的源代码在。,平衡维护逻辑与基础

#c++#开发语言
C++:模板进阶(从非类型参数到分离编译,吃透 C++ 泛型编程的核心逻辑)

非类型模板参数,就是用编译期可确定的常量作为模板的参数,在模板内部可以直接当常量使用。其中比较典型的例子就是 STL 中的array实际案例1.固定数组大小//模板进阶private:T _a[N];int _top;int main()//10//1000,那是不是就不够,只能改上面的定义,但是改的之后上面的st1就很浪费return 0;用非类型模板参数进行改进//非类型模板参数--很好的解决

#c++#开发语言
C++:vector(从三指针模型到手写完整实现)

public:--我们这里迭代器的使用可以测试一下,实现的打印函数我就直接放上去了,之前讲过test.c:i++)//v[0]++;v[0]++;Print(v);若 vector 存储的是含指针的自定义类型(如 string),直接用 memcpy 拷贝会导致多个对象共享内存,析构时双重释放。本文实现的 reserve 和拷贝构造均用移动 / 拷贝构造函数迁移元素,避免了这一问题。

#c++#开发语言
C++:模板初阶(原理 + 实例 + 避坑)

/ 类模板public:,_top(0){}private:T* _a;int main()//这里必须显示实例化,指明对象// 存int// 存doublereturn 0;//泛型编程//模板不支持声明和定义分离定义.h 和 .cpppublic://{}//{//// 扩容//// ...//}private:T* _a;, _top(0)// 扩容// ...class Apublic:T

#c++#算法#开发语言
C++:内存管理,详解自定义类型 new/delete 调用构造

int _val;int main()// 只开空间,不调用构造初始化,不太好使delete p2;delete p3;return 0;--我们可以发现new/delete在处理自定义类型的时候会比malloc等操作好很多,会调对应的构造函数和析构函数。

#c++#java#算法
到底了