
STL标准库
文章平均质量分 54
STL标准库相关知识积累
好吃还得是柚子
首先,少年,答应了别人的事就一定要做到
展开
-
map底层使用红黑树实验的原因
1、红黑树红黑树是一种二叉查找树,但在每个节点增加一个存储位表示节点的颜色,可以是红或黑(非红即黑)。通过对任何一条从根到叶子的路径上各个节点着色的方式的限制,红黑树确保没有条路径会比其它路径长出两倍,因此,红黑树是—种弱平衡二叉树,相对于要求严格的AVL树来说,它的旋转次数少,所以对于搜索,插入,删除操作较多的情况下,通常使用红黑树。性质1.每个节点非红即黑2.根节点是黑的3.每个叶节点(叶节点即树尾端NULL指针或NULL节点)都是黑的4.如果一个节点是红色的,则它的子节点必须是黑色的。5原创 2021-03-15 14:51:23 · 298 阅读 · 0 评论 -
STL知识点 | 迭代器的作用、有指针为何还要迭代器、迭代器是如何删除元素的
迭代器iterator(迭代器)模式又称 Cursor(游标)模式,用于提供-种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。或者这样说可能更容易理解:iterator模式是运用于聚合对象的—种模式,通过运用该模式,使得我们可以在不知道对象内部表示的凊况下,按照一定顺序(由 iterator提供的方法)访问聚合对象中的各个元素。由于 Iterator模式的以上特性:与聚合对象耦合,在一定程度上限制了它的广泛运用,一般仅用于底层聚合支持类,如STL的list、 vector、 s.原创 2021-02-07 07:36:55 · 434 阅读 · 1 评论 -
STL知识点 | map和set的区别与实现
map和set的定义:map和set都是C++的关联容器,其底层实现都是红黑树(RB-Tree)。由于map和set所开放的各种操作接口,RB-tree也都提供了,所以几乎所有的map和set的操作行为,都只是转调RB-tree的操作行为。map和set的区别:(1)map中的元素是 key-value(关键字值)对:关键字起到索引的作用,值则表示与索引相关联的数据;Set与之相对就是关键字的简单集合,set中每个元素只包含一个关鍵字。(2)set的迭代器是 const的,不允许修改元素的值;ma.原创 2021-02-05 09:38:42 · 293 阅读 · 0 评论 -
vector扩容时以2倍或1.5倍扩容的原因
vector扩容原理Vector通过一个连续的数组存放元素,如果集合已满,在新增数据的时候,就要分配一块更大的内存,将原来的数据复制过来,释放之前的内存,在插入新增的元素;对vector的任何操作,一旦引起空间重新配置,指向原vector的所有迭代器就都失效了 ;不同的编译器实现的扩容方式不一样,VS2019中以1.5倍扩容,GCC以2倍扩容。vector扩容代码示例:#include<iostream>#include<vector>using namespace原创 2021-02-01 08:33:37 · 4888 阅读 · 1 评论 -
C++ list::splice()函数作用详解
list::splice实现list拼接的功能。将源list的内容部分或全部元素删除,拼插入到目的list。函数有以下三种声明:一:void splice ( iterator position, list<T,Allocator>& x );二:void splice ( iterator position, list<T,Allocator>& x, iterator it );三:void splice ( iterator position, list转载 2021-01-26 19:25:28 · 644 阅读 · 0 评论