://ibillxia.github.io/blog/archives/
转载 2016-05-25 12:10:00
62阅读
2评论
诸如拷贝(copy)、互换(swap)、替换(replace)、填写(fill)、删除(remove)、排列组合(permutation)、分割(partition)、随。
原创 精选 16天前
128阅读
操作系统:centos 6.4STL源码版本:3.3前言: 要看一个项目的源码,首先要选中切入点。 那么在sgi stl 标准库中,其切入点是什么呢? 答案是:stl_config.h 文件。不同的编译器对C++语言的支持程度不尽相同。为了具备广泛移植能力,SGI STL 定义了一个环境组态文...
转载 2014-10-29 15:09:00
313阅读
2评论
1、容器(containers)提供各种数据结构,例如 vector、list、deque、set、map 等主要用于存放各类数据。因此称之为 容器2、算法(algorithm)算法包括 sort 、search、copy、erase 等常见算法3、迭代器(iterators)...
原创 2022-01-05 09:46:20
290阅读
memory其中主要内含以下两个文件#include <stl_alloc.h> // 负责内存空间的配置和释放#include <stl_construct.h> // 负责对象内
原创 2023-02-17 10:09:04
140阅读
1点赞
C++标准程序库中,属于STL范畴的,粗略估计在80%以上。
原创 2022-07-17 00:33:06
130阅读
vector维护的是一个连续空间,所以不论其元素型别如何,普通指针都可作为vector的迭代器而满足所有条件。vector的迭代器// T:数据类型,alloc:空间配置器template <class T, class Alloc = alloc>class vector { public: typedef T value_type; // vector的迭代器是普通指针 typedef value_type* iterator;}vector的数据结构temp
原创 2023-02-16 12:42:16
84阅读
1点赞
1 相关文件list list.h stl_list.h复制代码2 链表节点结构基类_List_node_base只有_M_prev, _M_prev,分别指向前置节点和后继节点,由此看出STL list是双向链表(首节点为空)struct _List_node_base {   _List_node_base* _M_next;   _List_node_base* _M_prev; }复制代码
转载 2021-01-22 19:20:31
241阅读
2评论
概览我大抵是太闲了。 sort 作为最常用的 STL 之一,大多数人对于其了解仅限于快速排序。听说其内部实现还包括插入排序和堆排序,于是很好奇,决定通过源代码一探究竟。个人习惯使用 DEV-C++,不知道其他的编译器会不会有所不同,现阶段也不是很关心。这个文章并不是析完之后的总结,而是边剖边写。不免有个人的猜测。而且由于本人英语极其差劲,大抵会犯一些憨憨错误。源码部分sort首先,在 D
二叉搜索树具有对数时间的搜索复杂度,但是这样的复杂度是再输入数据有足够的随机性的假设上哈希表在插入删除搜索操作上也具有常数时间的表现,而且这种表现是以统计为基础,不需要依赖输入元素的随机性hashtable提供对任何有名项的存取操作和删除操作,可以视为一种字典结构,负载系数:元素个数除以表格大小,除非使用开链,负载系数永远在0,1之间碰撞的解决方法:线性探测:当hash function计算出某个
转载 2016-06-17 16:56:00
60阅读
2评论
原创 2016-09-15 21:42:37
435阅读
1 deque相关头文件deque deque.h stl_deque.h复制代码2 deque的数据结构deque为双向队列,同时支持从队首和队尾插入和弹出值。其数据结构分为两部分,如下图所示:连续缓冲区_M_map, 元素类型为——Tp*。如果元素值不为NULL,则指向某个内存块;deque中使用__nstart(二级指针类型__Tp**)指向第一个内存块对应的数组元素;__nfinish指向
转载 2021-01-19 20:57:26
327阅读
2评论
1 string的数据结构从定义可知, string其实是base_string的特化类,string使用默认的内存分配器__STL_DEFAULT_ALLOCATOR(_CharT)。template <class _CharT,            class _Traits = char_traits<_CharT>,            class _Alloc = 
转载 2021-01-22 19:20:51
266阅读
2评论
前言 项目组要实现一个算法库,其中涉及到了类似vector的一维数组的实现。特此,对stl中得vector做个学习和了解。有任何问题,欢迎不吝指正。谢谢。一、如何实现vector 如果给你一道面试题,如何用数据结构实现STL中vector的功能?聪明的你会怎么做呢?或许你会如下所述:或许,如果不考虑分配效率,只需要两个成员就可以实现了 template <class _Ty> class Vector { public: Vector(int nLen=0):m_nLen(nLen),m_Data(NULL) { if(nLen > 0) ...
原创 2021-08-07 10:47:58
167阅读
哈希表是一种数据结构,它提供了快速的数据插入、删除和查找功能。它通过使用哈希函数将键(key)映射到表中的一个位置
原创 16天前
47阅读
空间配置器的标准接口(根据STL规范) allocator::value_typeallocator::pointeraence_typealloc
原创 2023-07-04 21:01:33
40阅读
文章目录介绍Level 0:使用C++标准库0 STL六大部件0.1 六大部件之间的关系0.2 复杂度0.3 容器是前闭后开(左闭右开)区间1 容器的结构与分类1.1 使用容器Array1.2 使用容器vector1.3 使用容器list1.4 使用容器foward_list1.5 使用容器slist1.6 使用容器deque1.7 使用容器stack/queue1.8 使用容器multiset
    之前一直都是会在开发中应用STL,大部分都是用到STL的容器,虽然STL在开发过程中有一些隐患,但是STL的思想和框架是值得学习和借鉴的,接下来一段时间计划好好的看下侯捷老师的STL源码剖析,旨在学会STL的设计思想,然后自己封装模板库,开发出适合自己项目的容器框架。     要剖析STL就不得不提模板和运算符重载,可以说STL基本是通过模板
本文通过剖析STL vector的源码,主要讲述了vector容器的实现原理与技术手段
原创 精选 2023-03-17 19:59:00
252阅读
1点赞
导论STL六大组件容器(containers):各种数据结构,如vector,list,deque,set,map,用来存放数据。算法(algorithms):各种常见的算法如sort,search,copy,erase等。迭代器(iterators):一种将operator*,operator->,operator++,operator--等指针相关操作予以重载的cla
  • 1
  • 2
  • 3
  • 4
  • 5