
STL
韵然CP
用最简单的语言注释程序
展开
-
【深度探索 STL】【数据结构】详解红黑树(一)结构及插入
红黑树概述 历史上 AVL 树流行的另一变种是红黑树(red-black tree)。对红黑树的操作能保证在最坏情况下动态几何操作的时间为 O(logN) 。之前介绍过AVL 树,该树都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。但 RB-Tree 出来之后,便很少有应用场合用到 AVL 。 这里在探索STL源码时学习红黑树的,由于STL中的关联式容器默认的...转载 2020-01-11 11:02:51 · 343 阅读 · 0 评论 -
C++ pair的基本用法总结(整理)
1,pair的应用 pair是将2个数据组合成一组数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。 pair的实现是一个结构体,主要的两个成员变量是first second 因为是使用struct不是class,所以可以直接使用pair的成员变量。 其标准库类型--pair类...转载 2020-01-11 10:04:23 · 817 阅读 · 0 评论 -
C++之set和multiset容器初学
Set和multiset容器 set/multiset的简介 set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。 set采用红黑树变体的数据结构实现,红黑树属于平衡二叉树。在插入操作和删除操作上比vector快。 set不可以直接存取元素。(不可以使用at.(pos)与[]操作符)。 multiset与set的区别...转载 2020-01-11 09:28:42 · 256 阅读 · 0 评论 -
STL中list的使用
list的底层结构 list底层是一个带头节点的双向循环链表,任意位置插入和删除时间复杂度0(1) list迭代器 由于list底层是带头节点的双向循环链表,因此list的迭代器需要list的实现者自己提供 迭代器怎么实现呢? 迭代器的本质是指针,将指针封装出新的类型,指针有的操作,迭代器也视情况支持这些操作,比如:指针++,–,*,-> 等操作。迭代器在类中将这些...转载 2020-01-10 21:28:12 · 149 阅读 · 0 评论