随笔分类 - STL
STL模板库
摘要:红黑树本质是一个二叉搜索树,每个节点非黑即红,再加上一些特性,变成平衡二叉搜索树(平衡性比AVL-tree弱一些)。红黑树的插入、删除、查找操作的时间复杂度是 O(logN)。
阅读全文
摘要:stack是一种先进后出(First In Last Out, FILO)的数据结构。只有一个出口。queue是一种先进先出(First In First Out, FIFO)的数据结构。有两个出口,从最底端加入元素、最顶端取出元素。
阅读全文
摘要:heap也就是数据结构中的堆,逻辑上可以看成一颗完全二叉树。binary max heap 作为 priority_queue 的底层机制。STL提供的是max-heap。
阅读全文
摘要:TL list是一个双向链表(double linked list)。SGI STL提供了另一个单向链表(single linked list)也就是slist。 slist与list差异: slist迭代器是单向的Forward Iterator,list迭代器是双向的Bidirectional
阅读全文
摘要:deque概述 deque 是一种双向开口的连续线性空间。可以在头尾两端分别做元素的插入和删除操作。 deque是有一段一段的定量连续空间构成,是动态分段连续。 deque 和 vector 的差异: deque 允许于常数时间内对两端进行元素的插入或移除操作。 deque 没有容量,它是动态地以分
阅读全文
摘要:vector 常被称为向量容器,因为该容器擅长在尾部插入或删除元素,在常量时间内就可以完成,时间复杂度为O(1);而对于在容器头部或者中部插入或删除元素,则花费时间要长一些(移动元素需要耗费时间),时间复杂度为线性阶O(n)。 vector实现的关键在于其对大小的控制以及重新配置时的数据移动效率。
阅读全文
摘要:迭代器(iterator)是一种抽象的设计理念,通过迭代器可以在不了解容器内部原理的情况下遍历容器。除此之外,STL中迭代器一个最重要的作用就是作为容器(vector,list等)与STL算法的粘结剂,只要容器提供迭代器的接口,同一套算法代码可以利用在完全不同的容器中,这是抽象思想的经典应用。 从实
阅读全文
摘要:STL list 容器,又称双向链表容器,即该容器的底层是以双向链表的形式实现的。这意味着,list 容器中的元素可以分散存储在内存空间里,而不是必须存储在一整块连续的内存空间中。 基于这样的存储结构,list 容器具有一些其它容器(array、vector 和 deque)所不具备的优势,即它可以
阅读全文
摘要:先谈operator new()和malloc() new:指我们在C++里通常用到的运算符 operator new():指对new的重载形式,它是一个函数,并不是运算符 函数operator new中调用malloc()进行内存分配。 malloc实际内存分配得到的内存空间如下: new 运算符
阅读全文
摘要:源代码:SGI-STL V3.3 注:SGI STL并不是原封不动的被用于GCC,所以在GCC中使用STL可能会和SGI STL有一些微小的区别 STL六大组件 容器 -- containers 配置器 -- allocators 算法 -- algorithms 迭代器 -- iterators
阅读全文

浙公网安备 33010602011771号