最近懈怠了STL,弄得都要翻资料了,赶紧弄点笔记:
建议
vector,等容器指针,真心是坑;要写就一定要保证,所有复制,赋值,创建,删除,自己写,所有的stl函数要留意点,比如remove这种移动函数。不然,用默认函数就特么操作指针,后面简直叫妈妈!!!
vector比deque多了capacity(能容纳的元素数量,就是开辟内存),reserve。可以看出vector的虚拟预定义分配。
vector对内存的处理是开辟后,clear并不释放,而是在析构函数上释放;所以要动态回收大多内存就要用swap来。vec.swap(vector());注意这段代码只能和clear连用,因为它同样能清空容器数据。
- 容器指针,老是需要自己写新函数,并自己调用它。所以STL提供智能指针来解决问题.
Effective stl指出了几个问题:
1、auto_ptr不能共享所有权
2、auto_ptr不能用数组初始化
3、auto_ptr不能作为容器成员
4、不能通过赋值操作来初始化auto_ptr
5、不要把auto_ptr放入容器。
shared_ptr就解决了1个问题而已。
|
|
2
|
|
3
首先可供查找的算法大致有count,find,binary_search,lower_bound,upper_bound,equal_range。带有判别式的如count_if,find_if或者binary_search的派别式版本,其用法大致相同
4
参考:http://blog.csdn.net/sdhongjun/article/details/4517325/
|
|
5
参考来自:stackoverflow :c++ unordered_map using a custom class type as the key
//std::tr1::unordered_map无序的高效map,貌似虐爆hash_map和map
//boost却要写个hash_value
struct KeyHasher
{
std::size_t operator()(const CString& k) const
{
retrun (hash<wstring>()(k.GetString()));
}
}
6
151对stl所有map和mfc的map做了比较,请看链接