
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
我们首先来看,什么是stl,我们常说stl是标准模板库。其实这样不对。标准模板库是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且 是一个包罗数据结构与算法的软件框架。什么意思呢?STL是标准库的一部分!当然IO流和智能指针我们后面讲,这里仅做列举。

vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。vector在实际中非常的重要,在实际中我们熟悉常见的接口就可以,下面列出了哪些接口是要重点掌握的。

List也是C++标准模板库(STL)中的一种容器,它的内存存储特点与string、vector不同,它的存储不是连续的,List将元素存储在不连续的内存中,通过指针连接前一个节点和后一个节点。就是另一种vector:只是内存存储变成了不连续。

*--------------------定义类型别名--------------------*///1.重命名“list节点”的类型:list_node<T> ---> Node//2.重命名“list迭代器”的类型:list_iterator<T,Ref,Ptr> ---> Self/*--------------------定义成员变量--------------------*///迭代器内

在C++17标准下,栈(stack)和队列(queue)作为STL容器适配器,通过封装底层序列容器(默认deque)实现了严格的数据结构约束:栈遵循LIFO原则仅开放push/pop/top操作,队列遵循FIFO原则限定front/back访问。

deque(双端队列):是一种双开口的"连续"空间的数据结构,双开口的含义是:可以在头尾两端进行插入和删除操作,且时间复杂度为O(1)。与vector比较,头插效率高,不需要搬移元素。与list比较,空间利用率比较高。但是deque并不是真正连续的空间,而是由一段段连续的小空间拼接而成的,实际deque类似于一个动态的二维数组,其底层结构如下图所示:deque的底层结构双端队列底层是一段假象的连续

AVL树:是一种 自平衡二叉搜索树,由苏联数学家 Georgy Adelson-Velsky 和 Evgenii Landis 在 1962 年提出,其名称来源于这两位发明者的名字缩写。AVL树要么是空树,要么是满足以下性质的二叉搜索树:其左、右子树也都是 AVL 树并且左、右子树的高度差的绝对值不超过 1假如以pParent为根的子树不平衡,即pParent的平衡因子为2或者-2,分以下情况考虑

比如:二、布隆过滤器引言:我们在使用新闻客户端看新闻时,它会给我们不停地推荐新的内容,它每次推荐时要去重,去掉那些已经看过的内容。问题来了,新闻客户端推荐系统如何实现推送去重的? 用服务器记录了用户看过的所有历史记录,当推荐系统推荐新闻时会从每个用户的历史记录里进行筛选,过滤掉那些已经存在的记录。 如何快速查找呢?大意是不同的数据结构有不同的适用场景和优缺点,你需要仔细权衡自己的需求之后妥善适用它

本文摘要: C++11新特性lambda表达式和智能指针详解。lambda表达式通过匿名函数简化代码,支持捕获外部变量,底层实现为仿函数类。智能指针包括unique_ptr(禁止拷贝)、shared_ptr(引用计数)和weak_ptr(解决循环引用),基于RAII思想自动管理资源。shared_ptr存在线程安全和循环引用问题,可通过加锁和weak_ptr解决。文章还介绍了定制删除器处理特殊内存

一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。return 0;分析如下:在传统C++编程中,我们通常将函数声明放在头文件(.h)中,实现放在源文件(.cpp)中。但对于模板,这种分离会导致编译器无法实例化模板,从而产生链接错误。模板是"蓝图"而非实际代码模板实例化发生在编译阶段。








