C++/C
文章平均质量分 64
欧阳大哥2013
坚持原创,以造轮子为乐
展开
-
STL list
1.list是一个双向链表,他支持双向迭代器,但不支持随机访问迭代器.2.定义template class Type, class Allocator=allocator >class list3.对于list来说当我们进行删除,添加等操作并不一定会对迭代器进行影响(尤其是不影响begin和end)。所以这跟vector不一样原创 2014-04-02 14:06:28 · 747 阅读 · 0 评论 -
STL 分配器
STL中默认的分配器是allocator,分配器负责对容器中的容量的分配去配,元素的构造析构等问题。1.分配器类的定义//TYPE指定容器中元素的类型template class allocator2.分配器中的类型定义typedef _SIZT size_type;typedef _PDFT difference_type;type原创 2014-04-03 09:29:51 · 1350 阅读 · 0 评论 -
STL 智能指针
智能指针是用来管理用new分配的内存的指针,他的定义如下:// TEMPLATE CLASS auto_ptrtemplateclass auto_ptr {public:typedef _Ty element_type;explicit auto_ptr(_Ty *_P = 0) _THROW0(): _Owns(_P != 0), _Ptr(_P) {}原创 2014-04-03 09:32:45 · 1352 阅读 · 0 评论 -
STL 迭代器
一、迭代器基类下面的列表定义了迭代器的类型,类型通过使用一个空结构来描述,但是可以通过RTTI来获取迭代器的名称// ITERATOR TAGS (from )struct input_iterator_tag {}; //输入迭代器struct output_iterator_tag {}; //输出迭代器struct forward_iterator_原创 2014-04-03 09:28:23 · 1175 阅读 · 0 评论 -
stl vector
1.构造函数explicit vector( size_type _Count); //这个构造函数,将构造出_Count个元素,并为每个元素调用构造拷贝函数,其中构造拷贝函数的原对象就一个临时默认构造函数的对象2.vector的迭代器实质就是元素的指针.3.若对vector进行的删除或者添加后,迭代器可能会失效, 在调用单个erase时原创 2014-04-02 14:14:37 · 954 阅读 · 0 评论 -
stl valarray
1.成批操作。源可以是一个valarray也可以是单个值,若是valarray时则必须要大于等于目标分别重载了: += -= *= /= |= &= >>= 2.对每个元素调用函数对象,产生一个新数组valarray apply( Type _Func(Type)) const;valarray apply( Type _Func原创 2014-04-02 14:13:43 · 1117 阅读 · 0 评论 -
stl stack
1.栈也是一个容器适配器,也是默认使用deque来作为容器。template >class stack {public:typedef _C::allocator_type allocator_type;typedef _C::value_type value_type;typedef _C::size_type size_type;explicit stack原创 2014-04-02 14:11:51 · 928 阅读 · 0 评论 -
STL set mutiset
1.概念: set是一个集合容器他不是序列容器而是一个相关容器,也就是迭代器的移动并不是线性的。而且这里的set是采用二叉树做物理存储的。这棵二叉树是一个排序二叉树也就是在中序遍历时是按 〈运算排列的。同时set中是没有重复的元素的。因为set是一个个相关容器,但也是特殊的相关容器,也就是他的健和值是相同的,这不同于map容器。set的迭代器是一种双向的迭代器。2.类的定义原创 2014-04-02 14:10:42 · 1077 阅读 · 0 评论 -
stl queue
容器适配器: 容器适配器本身没有任何代码,而只是提供一个接口.而具体实现则由容器来实现(接口的实现也是直接调用容器对应的函数)。容器适配器也只是将一个容器做为其数据成员。有些特定的容器适配器只支持特定的容器。容器适配器不支持迭代器1.queue: 这是一个单向队列(FIFO)。也就是说只能从后边插入,从前面删除。STL中的queue默认的是使用deque作为容器。因为queue原创 2014-04-02 14:09:39 · 1036 阅读 · 0 评论 -
stl priority_queue
1.优先级队列,是一个容器适配器。实际就是在一个堆上进行的插入和读取操作,并保证时时刻刻是一个堆//_C: 系统默认用vector做容器_Pr: 用于内部堆的重新构造(插堆和出堆的判断谓词以决定是大根堆还是小根堆,默认是大根堆)template,class _Pr = less >class priority_queue {public:原创 2014-04-02 14:08:41 · 870 阅读 · 0 评论 -
STL map mutimap
1.概念: set是一个映射容器他不是序列容器而是一个相关容器,也就是迭代器的移动并不是线性的。而且这里的map是采用二叉树做物理存储的。这棵二叉树是一个排序二叉树也就是在中序遍历时是按 〈运算排列的。同时map中是没有重复的元素的。因为map是一个个相关容器, 其容器中的所有元素都是由 {Key, Value}组成。而且在map中Key必须是唯一的。整个容器是按Key的 谓词比较运算排序的。原创 2014-04-02 14:07:30 · 1151 阅读 · 0 评论 -
STL的deque类
1.概念.这是一种随机访问的容器。用于快速的实现尾部和头部的插入和删除,而vector只在尾部插入和删除才是高效的.deque的物理存储结构如图|---| 中心| 0 |---> +---------------+--------------+|---| | 1 |---> +-------------------------原创 2014-04-02 14:05:28 · 980 阅读 · 0 评论 -
STL中的常用algorithm知识点
1.遍历前向迭代器(forward iterator)template Function for_each( InputIterator _First, InputIterator _Last, //最后这个不算 Function _Func ); //注意这里是返回函数对象本身了, _Func: 函数对原创 2014-04-02 14:03:56 · 1147 阅读 · 0 评论 -
stl 字符串类
1. 两个基本字符串类对于ANSI类型字符串是使用: typedef basic_string, allocator >string;2.而对于使用UNICODE则是使用typedef basic_string,allocator > wstring;由此可见字符串的基类是basic_string,对于每中类型的字符串都有其特别的特原创 2014-04-02 14:12:46 · 934 阅读 · 0 评论 -
STL 函数适配器
一、函数对象头文件 :functional二、函数对象的基类函数对象就是实现了operator()的对象。在STL中大部分函数对象都是一元函数(一个参数)和二元函数(两个参数).因此STL定义了这两种函数的基类://_A: 参数类型,注意这里不是引用,而就是一个具体的类型//_R: 函数返回类型templatestruct unary_funct原创 2014-04-03 09:31:14 · 1223 阅读 · 0 评论