随笔分类 -  stl学习笔记

摘要:http://blog.csdn.net/xiajun07061225/article/details/7459206 http://www.cplusplus.com/reference/set/multiset/ http://blog.csdn.net/lwbeyond/article/det 阅读全文
posted @ 2017-03-27 21:51 合唱团abc 阅读(153) 评论(0) 推荐(0) 编辑
摘要:_STL_jjalloc.h#pragma once#ifndef _JJALLOC_#define _JJALLOC_#include #include #include namespace JJ{ //配置空间,size是要分配的元素个数,第二个参数用处不清楚 template ... 阅读全文
posted @ 2015-11-04 14:45 合唱团abc 阅读(381) 评论(0) 推荐(0) 编辑
摘要:函数调用操作(c++语法中的左右小括号)可以被重载,STL的特殊版本都以仿函数形式呈现。如果对某个class进行operator()重载,它就成为一个仿函数。 仿函数(functor),就是使一个类的使用看上去象一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一 阅读全文
posted @ 2015-11-01 10:08 合唱团abc 阅读(650) 评论(0) 推荐(0) 编辑
摘要:#include using namespace std; /* priority_queue只允许在底端加入元素,并从顶端取出元素, 其内部元素不是依照被推入的次序排列,而是自动按照元素的权值排列,权值最大的元素排在最前面 缺省情况下priority_queue是利用一个max_heap完成.模板默认参数是vector,less. 常用接口:top(), push(), pop(),类似栈... 阅读全文
posted @ 2015-01-17 13:35 合唱团abc 阅读(316) 评论(0) 推荐(0) 编辑
摘要://STL提供的是Max heap,使用vector作为底部容器//push_heap算法:首先将元素放到堆所对应的数组的末端,然后从该节点开始向上调整,//若当前结点键值比父结点大,则兑换位置,如此一直上溯,直到不需对换或直到根节点为止template inline void push_heap(... 阅读全文
posted @ 2015-01-16 14:43 合唱团abc 阅读(332) 评论(0) 推荐(0) 编辑
摘要://SGI STL以deque作为缺省情况下的stack底部结构,stack没有迭代器,不提供遍历功能//queue的实现类似stack,也是以deque作为缺省底层结构template >class stack{ friend bool operator==__STL_NULL_TMPL_A... 阅读全文
posted @ 2015-01-16 13:25 合唱团abc 阅读(267) 评论(0) 推荐(0) 编辑
摘要:/* deque是一种双向开口的连续线性空间,可以在头尾两端分别做元素的插入和删除操作 常用接口:back(), front(), push_back(), pop_back(), push_front(), pop_front() deque与vector差异: 1.deque允许于常数时间内对头部进行元素的插入和移除操作 2.deque没有容量(capacity)概念,由分段连续空间组合而成... 阅读全文
posted @ 2015-01-15 13:59 合唱团abc 阅读(233) 评论(0) 推荐(0) 编辑
摘要://链表结点结构template struct _list_node{ typedef void *void_pointer; //指针类型为void *,其实可以设为_list_node* void_pointer prev; void_pointer next; T... 阅读全文
posted @ 2015-01-14 14:13 合唱团abc 阅读(158) 评论(0) 推荐(0) 编辑
摘要:typedef int size_type;/*vector维护的是一个连续线性空间,提供的迭代器是Random Access Iterators即普通指针*/template class vector{protected: iterator start;//目前使用空间的头 itera... 阅读全文
posted @ 2015-01-13 13:39 合唱团abc 阅读(170) 评论(0) 推荐(0) 编辑
摘要:new运算包含两阶段操作: 1) 调用::operator new分配内存 2) 调用构造函数构造对象内容 delete运算包含两阶段操作: 1)调用析构函数将对象析构 2)调用::operator delete释放内存 stl内存配置操作由allocate()负责,内存释放操作由deallocat 阅读全文
posted @ 2015-01-11 14:26 合唱团abc 阅读(320) 评论(0) 推荐(0) 编辑
摘要:注意operator *和operator->的实现,operator* 返回一个引用,operator->返回值必须为一个指针或可以应用 -> 操作的类型 如何获取迭代器所指对象的类型,即如何实现类型萃取? 可以定义一个类模板用于萃取迭代器特性,模板参数是迭代器类型。迭代器内部定义一个typede 阅读全文
posted @ 2015-01-10 13:53 合唱团abc 阅读(228) 评论(0) 推荐(0) 编辑
摘要:转自维基百科红黑树是一种平衡二叉搜索树,它可以在O(log n)时间内做查找,插入和删除,这里的n是树中元素的数目。性质:红黑树是每个节点都带有颜色属性的二叉查找树,颜色为红色或黑色。在二叉查找树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求:性质1. 节点是红色或黑色。性质2. 根... 阅读全文
posted @ 2014-07-26 19:59 合唱团abc 阅读(643) 评论(0) 推荐(0) 编辑
摘要:list使用双向链表来管理元素。与vector、deque的区别:1.list不支持随机存取,在list中随机遍历任意元素,是很缓慢的行为2.任何位置上执行元素的安插和移除都非常快,始终是常数时间内完成,因为无须移动任何其他元素3.安插和删除动作不会造成指向其他元素的各个pointer、refere... 阅读全文
posted @ 2014-07-26 19:22 合唱团abc 阅读(223) 评论(0) 推荐(0) 编辑
摘要:deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,deque在接口上和vector非常相似。deque的实现比较复杂,内部会维护一个map(注意!不是STL中的map容器)即一小块连续的空间,该空间中每个元素都是指针,指向另一段(较大的)区域,这个区域称为缓冲区,缓... 阅读全文
posted @ 2014-07-26 19:03 合唱团abc 阅读(207) 评论(0) 推荐(0) 编辑
摘要:vector是定义于namespace std内的template:namespace std{ template> class vector;}vector优异性能的秘诀之一,就是配置比其所容纳的元素所需更多的内存。capacity()函数返回vector实际能够容纳的元素数量。如果超... 阅读全文
posted @ 2014-07-26 18:47 合唱团abc 阅读(166) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示