STL
文章平均质量分 66
Sefr后端
关注我,一起进步
展开
-
【c++从菜鸡到王者】第九篇:仿函数与适配器解析
仿函数仿函数的用途主要是用来搭配STL算法,STL一般有两个版本,第一种表现出最常见的一种运算,第二种是由我们自己来规定如何运算,我们将以template参数来指定所要产生的运算,比如accumulate()其默认的行为是将元素相加,我们给其传入运算为相减的仿函数,取代第一版本的相加行为。为了使仿函数可配接,所以必须继承基类unary_function或者binary_function.【使仿函数可配接,为了使算法更加的灵活】当继承了class,仿函数就获取了相应的型别,主要用来表现函数参数型别与返回原创 2021-08-03 12:49:27 · 170 阅读 · 0 评论 -
【c++从菜鸡到王者】第八篇:深度剖析Traits技法
Traits编程技法Traits技法就是提取相应型别,什么是相应型别?迭代器所指对象的型别便是其中之一。(除此之外还有4中所必要的型别,后面详细介绍)在算法中我们要用到迭代器,假如一个算法需要使用迭代器中所指对象的型别来创建一个对象。就需要获取迭代器中的型别信息。我们知道每个容器都有专属的迭代器,所以每个容器的迭代器都含有我们所需要的相应的型别信息,所以需要一个特殊的装置帮我们提取相关的信息,那就是Traits(萃取机)下面我们具体介绍一下这5个型别的具体含义value_type :.原创 2021-07-26 20:49:30 · 300 阅读 · 0 评论 -
【c++从菜鸡到王者】第七篇:STL-空间配置器
空间配置器详解SGI特殊的空间配置器-alloc我们所习惯的c++内存操作:new/delete (new: 首先operator new 配置内存,再然后 调用构造函数构造对象;delete:先调用析构函数析构对象,在operate delete 释放内存)STL决定将上面的两个过程分开,内存配置操作由alloc::allocate()完成,释放由alloc::deallocate().对象构造由::construct()完成,对象析构由destroy()完成。在STL中,配置器定义在<.原创 2021-07-25 22:20:57 · 202 阅读 · 2 评论 -
【c++从菜鸡到王者】第六篇:详解晦涩难懂的c++语法
stl_config.h的各种组态在阅读侯捷老师的《stl源码剖析》,了解到组态这个东西,说是其书上所列的几个组态常量是用来区分编译器对c++ Standard的支持程度,以下的组态所关系到的代码都是template参数推导,偏特化之类的问题组态一:__STL_STATIC_TEMPLATE_BUG测试在class template中拥有static data members组态二:__STL_CLASS_PARTIAL_SPECIALIZATION测试 class template .原创 2021-07-23 22:13:38 · 545 阅读 · 2 评论 -
【c++从菜鸡到王者】第4篇:STL非标准容器-hashtable
hashtable//下面介绍一下hashtabl迭代器的主要功能函数operator++template<class Value, class Key, class HashFen, class ExtractKey, class EqualKey, class Alloc>_hashtable_iterator< Value, Key, HashFen, ExtractKey, EqualKey, Alloc>&_hashtable_iterator&原创 2021-07-22 21:54:20 · 216 阅读 · 4 评论 -
【c++从菜鸡到王者】第三篇:STL关联容器-Map
mapmap特性:所有的元素会根据元素的键值被排序,pair的所有元素都为键值,同时拥有键值和实值,pair的第一元素为键值,第二元素为实值,map不允许两个相同键值的元素存在。//pair的定义template<class T1,class T2>struct pair{ typedef T1 first_type; typedef T2 secend_type; T1 first; T2 secend; pair():first(T1())原创 2021-07-21 20:08:36 · 99 阅读 · 0 评论 -
【c++从菜鸡到王者】第二篇:STL关联容器-(multi)Set
setset特性:所有元素会根据键值来自动排序;杜绝写入操作,通过下面迭代器的源代码可以看出,因为set要根据键值排序,如果插入会破坏set组织;客户端对元素进行插入或者是删除操作时,其他元素的迭代器都是有效的,除了被删除的元素的迭代器除外;标准set容器是以红黑树为底层机制的,也可以用hash—table为底层机制。template<class T,class Compare=less<Key>,class Alloc =alloc>class set{ publ原创 2021-07-21 11:47:01 · 209 阅读 · 0 评论 -
【c++从菜鸡到王者】第一篇:STL之主要序列容器
第一篇基础c++STL 容器大纲呈现分配器(空间配置器):一般的分配器的std:alloctor都含有两个函数allocate与deallocte ,这两个函数分别调用operator new()与delete(),这两个函数的底层又分别是malloc()and free();但是每次malloc会带来格外开销(因为每次malloc一个元素都要带有附加信息)容器之间的实现关系以及分类list属于双向链表,其结点与list本身是分开设计的template<class T, clas原创 2021-07-19 15:24:37 · 370 阅读 · 13 评论