STL学习

基础知识:

map:http://www.cnblogs.com/skynet/archive/2010/06/18/1760518.html

 

容器deque深入学习:http://www.2cto.com/kf/201204/126761.html

迭代器失效问题:http://blog.163.com/guo_linda/blog/static/123773057201151033144945/

 

erase:

http://blog.chinaunix.net/uid-9435177-id-2002677.html

http://blog.csdn.net/yangruibao/article/details/9040045

http://www.cnblogs.com/kex1n/archive/2011/12/06/2278505.html

 

迭代器:

http://wenku.baidu.com/link?url=_04pbSwzGhYjiTOP7m02OflOKU41HXy8aR89oscb8xaO0DAX5zseBJVCEVcs8nZTgk3JM4gV0upJRd8d5_eQcU3YoK-lJeu9ROE8YnIo4tO

http://blog.csdn.net/touzani/article/details/1643859

 

容器:

各容器对比表,包括操作以及时间复杂度:http://www.cnblogs.com/fangyukuan/archive/2010/09/21/1832675.html

容器总结:http://www.cnblogs.com/duzouzhe/archive/2010/01/12/1645191.html

容器总结:http://www.cnblogs.com/sharpfeng/archive/2012/09/18/2691096.html

红黑树实现-stl map:http://www.dklkt.cn/article.asp?id=181 

知乎关于红黑树的全面解读:http://www.zhihu.com/question/20545708

容器操作之总结:http://wenku.baidu.com/link?url=uvfam9KFb-Y-qPJKL1Azzmb3W7YTA6DMQ8xACiuE-rHsFKAcwe_-0BFmCMF0pVfsF26SU3ZYt6LInTAaqaFZozJoCeC1pyi6ee04jZDPwV_

容器的对比:http://wenku.baidu.com/link?url=mTc3jkARGIj8S9l-hwDhIdQjovwCpgAK1KxPfmHszBRtrf_sy6SKjXdu4Q1T_LzmhgHj0zl82eda3Mm5DX1xwjf_33dJscquMFhm6xX8V-a

 

关联容器概述:http://blog.csdn.net/yfkiss/article/details/6594859

stl list:http://www.cnblogs.com/fangyukuan/archive/2010/09/21/1832364.html

stl set:http://baike.baidu.com/view/4255961.htm?fr=aladdin     http://www.cppblog.com/huyutian/articles/107457.html

 ---------------------------------------------------------------实现------------------------------------------------------------------------------------------------

关于stl内存的实现:

C++ 内存分配(new,operator new)详解:http://blog.163.com/redhumor@126/blog/static/195547842010621103749696/

另附:线程安全几个重要概念

彻底学习STL中的Allocator(不看也罢)

SGI STL 的内存管理

STL中的vector的实现

C 工具库3:固定大小的 obj pool

------------------------------------------------------------------------实现------------------------------------------------------------------------------------------------

各种树:AVL B树 B+树等

avl树:http://baike.baidu.com/view/671745.htm?fr=aladdin

http://blog.163.com/redhumor@126/blog/static/195547842010621103749696/

 

算法以及实现:

http://www.cnblogs.com/kzloser/archive/2012/11/02/2751424.html 这篇博客讲tcp部分也很好

http://www.cppblog.com/mzty/archive/2007/03/14/19819.html

http://blog.csdn.net/calmreason/article/details/17010745

 sort算法的实现:http://www.cppblog.com/mzty/archive/2005/12/15/1770.html

 

三十分钟掌握stl:http://net.pku.edu.cn/~yhf/UsingSTL.htm

代码优化:

http://www.cnblogs.com/daoluanxiaozi/archive/2012/04/15/2450134.html  (来源于编程珠玑,C++的其他博客也貌似不错)

 

白杨里面有个关于异常实现机制:http://baiy.cn/

 

想看还没看的:

关于operator new

http://blog.sina.com.cn/s/blog_3c6889fe0100tqe8.html

http://www.cnblogs.com/wanghetao/archive/2011/11/21/2257403.html

 

关于stl的:

内存分配:http://www.cnblogs.com/cobbliu/archive/2012/04/05/2431804.html

迭代器实现:http://www.cnblogs.com/cobbliu/archive/2012/04/17/2440347.html

迭代器分类:http://www.360doc.com/content/14/0106/09/1317564_342968414.shtml       http://blog.csdn.net/touzani/article/details/1643859

 

 

关于stl的remove算法和list的remove方法

概括来讲,stl的remove算法由于不清楚如何删除元素(无法通过迭代器来删除,不清楚是什么容器),所以只能讲元素逐个向前移动,返回新集合最后一个元素的最后一个元素(因此size不变),然后调用erase方法(由于要删除元素,所以只能是容器的方法而不是以算法的形式实现)。而list数据结构的特点决定了如果要删除元素是不能使用移动的方式的,故单独实现了一个方法。

如果容器是vector、string或者deque,使用erase-remove的惯用法。如果容器是list,使用list::remove,如果是关联容器使用erase成员函数

同样,如果是vector/string/deque,使用erase-remove_if惯用法,如果是list使用remove_if,如果是关联容器使用remove_copy_if和swap组合算法

 

remove算法原型,使用泛型,传递的参数为迭代器

template<class ForwardIterator, class T>

ForwardIterator remove(ForwardIterator first, ForwardIterator last, const T&value)

 

相关链接:http://blog.csdn.net/vbanglev/article/details/1512521

http://www.cnblogs.com/kinuxroot/archive/2013/01/25/stl_remove_problem.html

 

迭代器

迭代器就是为各容器生成一个可以迭代自身的类,而再通过typedef来把该迭代类绑定到容器类中,这样就给了外部一个形式统一的使用方法。(http://blog.csdn.net/junguo/article/details/671142)

list的迭代器是否可以使用++运算符,为什么list内存不连续迭代器也可以++。答:迭代器是一个类,作为容器的成员,++运算符不同的迭代器有与之对应的实现。

为什么迭代器会失效,以及失效的情况(map erase之后会不会失效)

迭代器是算法和容器相互沟通的桥梁,算法能否使用容器关键是看容器能否提供相应的接口。还是觉得算法和容器没必要分开。

相关链接:

http://blog.csdn.net/junguo/article/details/671142   解释了迭代器的实现,几种迭代器实际定义是空

 

posted @ 2014-06-28 11:41  johnny_HITWH  阅读(467)  评论(0编辑  收藏  举报