Effective STL学习笔记

本文深入探讨了C++ STL容器的管理技巧,包括指针管理、迭代器转换、逆向迭代器使用及高效排序策略等内容。文章还介绍了如何利用STL算法进行元素删除与分区操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 


 

malloc 、 realloc、calloc

 

 


 

//条款27:用distance和advance把const_iterator转化成iterator

 

 


//条款28:了解如何通过reverse_iterator的base得到iterator
//要实现在一个reverse_iterator ri指出的位置上插入新元素,在ri.base()指向的位置插入就行了。对于insert操作而言,ri和ri.base()是等价的,而且ri.base()真的是ri对应的iterator。
//要实现在一个reverse_iterator ri指出的位置上删除元素,就应该删除ri.base()的前一个元素。对于删除操作而言,ri和ri.base()并不等价,而且ri.base()不是ri对应的iterator。
 

 


 

条款29:需要一个一个字符输入时考虑使用istreambuf_iterator

 

 


 

条款31:了解你的排序选择

 

(1)如果你需要在vector、string、deque或数组上进行完全排序,你可以使用sort或stable_sort。 如果你有一个vector、string、deque或数组,你只需要排序前n个元素,应该用partial_sort。

(2)如果你有一个vector、string、deque或数组,你需要鉴别出第n个元素或你需要鉴别出最前的n个元素,而不用知道它们的顺nth_element是你应该注意和调用的。

(3) 如果你需要把标准序列容器的元素或数组分隔为满足和不满足某个标准,你大概就要找partition或stable_partition。

(4)如果你的数据是在list中,你可以直接使用partition和stable_partition,你可以使用list的sort来代替sort和stable_sort。如果你需要partial_sort或nth_element提供的效果,你就必须间接完成这个任务,但正如我在上面勾画的,会有很多选择。

 

 

http://dev.youkuaiyun.com/htmls/23/23680.html

 

函数partion,将区间进行划分。

 


条款32:如果你真的想删除东西的话就在类似remove的算法后接上

unique行为也像remove。它用来从一个区间删除东西(邻近的重复值)而不用访问持有区间元素的容器。结果,如果你真的要从容器中删除元素,你也必须成对调用unique和erase,unique在list中也类似于remove。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值