分享
 
 
 

侯捷《STL源码剖析》--STL学习笔记

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

这是我看了《STL源码剖析》之后的一些个人的看法,因为要消化某一个东西,最好的方法就是写下自己的看法和理解。再经过时间的积累,就会慢慢积累到你对真正意义的掌握。这是我的第一个比较正式一点学习笔记,以前也有一些,但都比较零散,其中这段时间对STL比较着迷,也希望得到高手的指点,因为我现在对于ALLOCATOR和adapter还不是很理解,我自己也写过一些仿allocator和adapter,但还不太清楚,有时就是自己写得出也未必了解得透。特别是adapter,我对本源的使用意义和用处还不很理解。希望大家给我指点。欢迎所有STL高手和新手们来指点我。学无止境!!!

笔记一:对于算法、仿函数、配接器的一些看法:

一、算法:

就是一组模板函数。根据我们所要操作的目的进行操作OK了。其实我们在看STL时经常看到 template< class InputIterator,class OutputIterator> sub(…){….}等等,以为InputIterator或是OutputIterator是某个固定的类型,其实这是STL标准和约定而已,你可以写成template< class T1, class T2> sub(…){….},其实这些都是约定的东西而已,也就是说如果你不想去符合STL标准,不是进行STL标准库扩充,你根本不要在意这些约定的写法。我们要关注的应该是在函数里面的应该要求进来的迭代器提供什么行为功能,也就是迭代器是否应该具有operator++,operator--,operator+,operator-,operator(),operator*,operator->等等自然指针的行为。因为我们在算法函数里面进行的这些操作符的运算,看起来很简单,其实有可能就要用到迭代器的行为。比如:

Template< class T1, class T2>

T2 sum_among( T1 first, T1 last, T2 init)

{

For ( ; first != last; first++ )

Init += *first;

Return init;

}

我这个算法也可以放在STL标准库里头作为统计在两个迭代器之间的元素的个数,类似的如accumulate

Template <class InputIterator, class T >

T accumulate ( InputIterator first, InputIterator last, T init )

{

For ( ; first != last; first++ )

Init += *first;

Return init;

}

这两个函数一样的功能,不同的一点是第二个写得让人能够清楚的读懂罢了。在这里面重要的是一个要用这个函数的人应该记得:

1、你的InputIterator类迭代器应该具有!=,++,*这三个指针行为。否则你使用起来错误一大把。

2、作为T类型的变量(或是对象)也应该具有+=之类的行为能力。比如我们使用

vector<int> v(3,3);

int s;

s = accumulate( v.being(), v.end(), s ); //结果应该是9

3、在整个调用过程中间,对于init的使用,有两次传值过程,也就是copy_in和copy_out。这是STL的重要特征之一。对于这种小型的变量,一般要采用copy_value传递方法,避免引用时出错。因为最重要的一点,我们的STL有强大的iterator。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有