STL是建立在泛化之上的。数组泛化为容器,参数化了所包含的对象的类型。函数泛化为算法,参数化了所用的迭代器的类型。指针泛化为迭代器,参数化了所指向的对象的类型。STL中的六大组件:容器、算法、迭代器、配置器、适配器、仿函数。
这六大组件中在容器中分为序列式容器和关联容器两类,正好作为STL源码剖析这本书的内容。迭代器是容器和算法之间的胶合剂,从实现的角度来看,迭代器是一种将operator*、o...
分类:
其他好文 时间:
2014-12-13 19:26:19
阅读次数:
126
STL源码剖析---关联容器
标准关联容器分为set和map两大类,包括multiset和multimap,这些容器的底层机制都是RB-tree.标准之外的关联容器有hashtable 以及以此hash table为底层机制而完成的hash_set(散列集合) hash_map(散列映射表) hash_multiset hash_multimap.
序列和关联容器各自的内部...
分类:
其他好文 时间:
2014-12-09 23:11:43
阅读次数:
465
STL是建立在泛化之上的。数组泛化为容器,参数化了所包含的对象的类型。函数泛化为算法,参数化了所用的迭代器的类型。指针泛化为迭代器,参数化了所指向的对象的类型。STL中的六大组件:容器、算法、迭代器、配置器、适配器、仿函数。
这六大组件中在容器中分为序列式容器和关联容器两类,正好作为STL源码剖析这本书的内容。迭代器是容器和算法之间的胶合剂,从实现的角度来看,迭代器是一种将operator*、o...
分类:
其他好文 时间:
2014-12-08 00:55:58
阅读次数:
213
高效STL—关联容器
标准关联容器中最重要的就是基于等价而不是相等。比如对于基本的函数库有find函数,但是对于set关联容器也是有find成员函数的。因为标准关联容器保持有序,所以每一个容器必须有一个定义了怎么保持东西有序的比较函数(默认是less)。等价是根据这个比较函数定义的,所以标准关联容器的用户只需要为他们要使用的任意容器指定一个比较函数
...
分类:
其他好文 时间:
2014-12-06 20:22:45
阅读次数:
206
Vector是一种可以默认使用的序列类型,当很频繁地对序列中部进行插入和删除时应该用lit,当大部分插入和删除发生在序列的头或尾时可以选择deque这种数据结构。
STL是建立在泛化上的。数组泛化了容器,参数化了所包含的对象的类型。函数泛化为算法,参数化了所有的迭代器的类型。指针泛化为迭代器,参数化了所指向的对象的类型。
独立的容器类型泛化为序列或关联容器,...
分类:
其他好文 时间:
2014-12-06 10:09:40
阅读次数:
135
一:map的前世今生
(1)从关联容器与顺序容器说起,关联容器通过键(key)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存储和访问元素(vector,queue,stack,list等)。
关联容器(Associative containers)支持通过键来高效地查找和读取元素。两个基本的关联容器类型是 map 和 set。 其中map 的元素以键-值(key-value)...
分类:
编程语言 时间:
2014-11-19 18:43:59
阅读次数:
227
C++ Primer 中文版,第4版/*第一章 快速入门第二章 变量和基本类型第三章 标准库类型第四章 数组和指针第五章 表达式第六章 语句第七章 函数第八章 标准IO库第九章 顺序容器第十章 关联容器第11章 泛型算法 第12章 类 第13章 复制控制 第14章 重载操作符与转换第15章 面向对象...
分类:
其他好文 时间:
2014-11-10 23:03:23
阅读次数:
335
容器hash_set是以hash table为底层机制的,差点儿所有的操作都是转调用hash table提供的接口。因为插入无法存储同样的键值,所以hash_set的插入操作所有都使用hash table的insert_unique接口,代码例如以下:pair insert(const value_...
分类:
其他好文 时间:
2014-11-06 19:04:34
阅读次数:
200
#include
#include
#include
#include
#include
#include
#include
using namespace std;
class TextQuery
{
public:
typedef vector::size_type line_no;
TextQuery(){};
void read_file(ifstream &is)
...
分类:
编程语言 时间:
2014-11-05 17:11:44
阅读次数:
215
1:set不支持map的下标操作,同时multimap也是不支持的 2:map解决的是类似字典这种对应应用;set类似于黑名单的应用;这类容器都是通过键来存储和读取元素的;而顺序容器是通过元素的位置顺序存储以及访问。 3:multimap 以及multiset是多键值的;类似电话簿,一个人可以多个号...
分类:
其他好文 时间:
2014-10-28 11:52:09
阅读次数:
196