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的实现
------------------------------------------------------------------------实现------------------------------------------------------------------------------------------------
各种树: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 解释了迭代器的实现,几种迭代器实际定义是空