容器是很多人对STL的第一印象,vector,stack,queue,set,map等等都是容器。
这里先介绍 STL中的序列式容器。
所谓序列式容器,其中的元素可序(ordered),但未必有序(sorted)。C++ 本身提供了一个序列式容器——数组(array),STL中还提供了向量(vector),链表(list),堆栈(stack),队列(queue),优先队列(priorit...
分类:
其他好文 时间:
2015-06-19 16:51:52
阅读次数:
101
关于迭代器的基本介绍可以看我之前泛型编程的文章:
STL的中心思想在于:将数据容器(containers)和算法(algorithms)分开,彼此独立设计,最后再以一帖粘合剂将它们撮合在一起。
迭代器(iterator)是一种 smart pointer,关于智能指针可以看我之前的文章(智能指针)。
迭代器是一种行为类似指针的对象,而指针的各种行为中最常见也最重要的便...
分类:
其他好文 时间:
2015-06-19 15:18:36
阅读次数:
150
内存基本处理工具:
STL有五个全局函数,作用于未初始化空间上,它们分别是:construct(), destroy(), uninialized_copy(), uninialized_fill()和uninialized_fill_n()。
前两个函数前面文章有介绍,下面介绍后三个函数。 uninitialized_copy()使我们能够将内存的配置与对象的构造行为分离开来。如果作...
分类:
其他好文 时间:
2015-06-18 11:45:02
阅读次数:
136
STL所有的操作对象(所有的数值)都存放在容器之内,容器需要分配空间以存放数据。为什么不说allocator是内存配置器而是空间配置器,因为空间不仅是内存,空间也可以是磁盘或其它辅助储存媒体。这里我们主要讨论内存配置。
SGI STL每个容器缺省的空间配置器为alloc,如vector: template
clas...
分类:
其他好文 时间:
2015-06-18 09:47:39
阅读次数:
124
ForwardIter lower_bound(ForwardIter first, ForwardIter last,const _Tp& val)算法返回一个非递减序列[first, last)中的第一个大于等于值val的位置。
ForwardIter upper_bound(ForwardIter first, ForwardIter last, const _Tp& val...
分类:
其他好文 时间:
2015-06-09 17:27:31
阅读次数:
98
过年在家无事看了《STL源码剖析》,开学了将看过的东西总结一下,以防忘记。 先从STL的内存管理开始总结。掌管STL内存控制的是一个叫空间适配器(alloc)的东西。STL有两个空间适配器,SGI标准空间适配器(allocate)和SGI特殊的空间适配器(alloc),前者只是对c++的new...
分类:
其他好文 时间:
2015-05-30 17:51:38
阅读次数:
100
#include
#include
#include
#include
using namespace std;
int main(int argc, char **argv)
{
int iArray[5] = {1, 2, 3, 4, 5};
vector iVect(iArray, iArray+5);
cout << accumulate(iVect.begi...
分类:
其他好文 时间:
2015-05-14 22:02:03
阅读次数:
122
《STL源码剖析》的5.7.7 hash function一节中介绍了中定义了数个现成的hash函数,全都是仿函数。这些hash函数支持的模板类型包括:char*, const char*, char, unsigned char, signed char, short, unsigned short, int , unsigned int, long, unsigned long。这些不同类型的...
分类:
其他好文 时间:
2015-04-26 12:28:03
阅读次数:
148
五类迭代器如下:
1、输入迭代器:只读,一次传递
为输入迭代器预定义实现只有istream_iterator和istreambuf_iterator,用于从一个输入流istream中读取。一个输入迭代器仅能对它所选择的每个元素进行一次解析,它们只能向前移动。一个专门的构造函数定义了超越末尾的值。总是,输入迭代器可以对读操作的结果进行解析(对每个值仅解析一次),然后向前移动。
2...
分类:
其他好文 时间:
2015-04-23 19:59:54
阅读次数:
135
STL的设计非常巧妙,组件间互取短长,形成了一个世界,这是这个世界里的组件:
1. containers(容器):所谓容器,是指存放数据的地方,将数据以一定的方法组织存放。根据不同的组织方式,可以把容器分为顺序容器,如vector、deque、list,关联容器,如set、map。Container是一种class template。
2. algorithm(算法):各种常用不常用的算法如s...
分类:
其他好文 时间:
2015-04-16 21:55:30
阅读次数:
220