STL学习小结(原创:桑英硕 )[2]

[入库:2005年8月19日] [更新:2007年3月24日]

本文简介:选择自 wxaxiao 的 blog

考虑到不同的实际需要,更主要的是效率的需要,我们可以选择不同的容器来实现我们的程序,以此达到我们提高性能的目的。这也是用好stl的一个难点,但这也是关键。

二、算法
算法部分主要由头文件<algorithm>,<numeric>和<functional>组成。<algorithm>是所有stl头文件中最大的一个,它是由一大堆模版函数组成的,可以认为每个函数在很大程度上都是独立的,其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、移除、反转、排序、合并等等。<numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数,包括加法和乘法在序列上的一些操作。<functional>中则定义了一些模板类,用以声明函数对象。

stl的算法也是非常优秀的,它们大部分都是类属的,基本上都用到了c++的模板来实现,这样,很多相似的函数就不用自己写了,只要用函数模板就ok了。

我们使用算法的时候,要针对不同的容器,比如:对集合的查找,最好不要用通用函数find(,它对集合使用的时候,性能非常的差,最好用集合自带的find(函数,它针对了集合进行了优化,性能非常的高。

三、迭代器
它的具体实现在<itertator> 中,我们完全可以不管迭代器类是怎么实现的,大多数的时候,把它理解为指针是没有问题的(指针是迭代器的一个特例,它也属于迭代器),但是,决不能完全这么做。

迭代器功能abilities of iterator gategories

输入迭代器

input iterator

向前读

reads forward

istream

输出迭代器

output iterator

向前写

writes forward

ostream,inserter

前向迭代器

forward iterator

向前读写

read and writes forward

 

双向迭代器

bidirectional iterator

向前向后读写

read and writes forward and

backward

list,set,multiset,map,mul

timap

随机迭代器

random access iterator

随机读写

read and write with random

access

vector,deque,array,string

本文关键:STL学习小结(原创:桑英硕 )
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top