
STL
蓝子娃娃
越努力,越幸运!!!
展开
-
STL容器线程安全问题
一般来说,STL 对于多线程的支持仅限于下列两点:多个读取者是安全的。即多个线程可以同时读取一个容器中的内容。即此时多个线程调用容器,只要不涉及到写的接口都可以。比如,find,begin,end 等等。对不同容器的多个写入者是安全的。即多个线程对不同容器的同时写入合法。但是对于同一容器当有线程写,有线程读时,如何保证正确?需要程序员自己来控制,比如:线程A读容器某一项时,线程B正在移除该项。这会导致无法预知的错误。通常的解决方式是用开销较小的临界区来做同步。用以下方式同步基本上可以做到线程安全的容器转载 2020-08-16 18:17:45 · 1044 阅读 · 0 评论 -
详解STL之仿函数
仿函数(函数对象)概观仿函数的通俗定义:仿函数(functor)又称为函数对象(function object)是一个能行使函数功能的类。仿函数的语法几乎和普通函数调用一样,不过作为仿函数的类,都必须重载 operator() 运算符。仿函数的作用主要在哪里?STL 所提供的各种算法,往往有两个版本,其中一个版本表现出最常用(或最直观)的某种运算,第二个版本则表现出最泛化的演算流程,允许用户“以 template 参数来指定所要采取的策略”。以 sort() 为例,其第一版本是以 operator&转载 2020-08-16 18:01:50 · 670 阅读 · 0 评论 -
史上最全的C++ STL容器解析
一、 浅谈 vector 容器1. vector 容器的概念我们知道,一个数组必须要有固定的长度,在开一个数组的时候,这个长度也就被静态地确定下来了。但是vector却是数组的“加强版”,对于一组数据来讲,你往vector里存多少数据,vector的长度就有多大。也就是说,我们可以将其理解为一个“变长数组”。事实上,vector的实现方式是基于倍增思想的:假如vector的实际长度为n,m为vector当前的最大长度,那么在加入一个元素的时候,先看一下,假如当前的n=m,则再动态申请一个2m大小的内原创 2020-08-01 18:47:37 · 2180 阅读 · 2 评论 -
5-探索vector
说在前面vector 的数据安排以及操作方式,与 array 非常类似。两者唯一的差别在于空间的运用的灵活性。array 是 静态空间,一旦配置了就不能改变。而 vector 是动态空间,随着元素的加入,它的内部机制会自动扩充空间(一般为原空间的两倍)以容纳元素。下面,我将以一张图来引入 vector。假设此时有一个...原创 2020-09-12 16:45:41 · 196 阅读 · 1 评论 -
4 - 迭代器的设计原则
Iterator 需要遵循的原则 说到 Iterator,我想首先提及一下 Traits,翻译过来就是特征,特性。Traits 就是认为设计制造的一种萃取机可以这样子来表达。所谓萃取机,就是你丢给它什么东西,然后萃取出你想要的特征。所以,我们会在标准库中谈到好几种 Traits,比如针对 Type,就有 Type Traits,针对 Character,就有 Character Traits等等。而我们本章所谈及的是 Iterator。所以,我们现在来谈谈 Iterator Traits。 我们都原创 2020-09-12 14:18:13 · 326 阅读 · 0 评论 -
3-容器之list
文章目录一、容器 - 结构与分类二、探索 list一、容器 - 结构与分类下图就是一些基本的容器,红色框代表是 C++11 新增容器。下面我再用一个图形象的表示个容器之间的关系**这里需要注意的是:这张图是以缩排方式表示 ”基层与衍生层“ 的关系。而这里的衍生,并非继承而是复合。**比如,set 和 map,它们是底层有一个 rb_tree,而不是继承 rb_tree,这里需要弄清楚它们之间的 关系。里面也涵盖了了一些非标准的非公开的。到了 C++11 之后,slist 换了一个名字叫做 for原创 2020-09-12 08:33:28 · 240 阅读 · 0 评论 -
2-空间配置器(allocator)
文章目录一、OOP vs GP一、OOP vs GPOOP(Object-Oriented programming):面向对象编程,就是试图将 datas 和 methods 关联在一起。GP(Generic Programming):泛型编程,试图将 datas 和 methods 分离。可以将容器看作 datas ,将 Algorithms 作为 methods ,两者需要通过迭代器来进行联系。Algorithms 通过 Iterators 确定操作范围,并通过 Iterators 取用 Co原创 2020-09-11 19:52:03 · 450 阅读 · 0 评论 -
1-STL体系结构基础介绍
文章目录一、STL 六大部件(Components)二、容器之分类及各种测试1. 序列容器(Sequence Containers)2. 关联容器(Associative Containers)3. 不定序容器(Unordered Containers)(C++11)一、STL 六大部件(Components)容器(Containers)分配器(Allocators)算法(Algorithms)迭代器(Iterators)适配器(Adapters)仿函数(Functors)六大部件的关系原创 2020-09-10 15:13:47 · 612 阅读 · 0 评论