Effective STL(5)——算法

1.确保目标空间足够大

2.了解各种与排序有关的选择
  如果需要对vector、string、deque或者数组中的元素执行一次完全排序,那么可以使用sort或者stable_sort。
  如果有一个vector、string、deque或者数组,并且只需要对等价性最前面的n个元素进行排序,那么可以使用partial_sort。
  如果有一个vector、string、deque或者数组,并且需要找到第n个位置上的元素,或者,需要找到等价性最前面的n个元素但又不必对这n个元素进行排序,那么,nth_element正是你所需要的函数。
  如果需要将一个标准序列容器中的元素按照是否满足某个特定的条件区分开来,那么,partition和stable_partition可能正是你所需要的。
  如果你的数据在一个list中,那么你仍然可以直接调用partition和stable_partition算法;可以用list::sort来替代sort和stable_sort算法。但是,如果你需要获得partial_sort或nth_element算法的效果,那么,正如前面我所提到的那样,你可以有一些简洁的途径来完成这项任务。

3。如果确实需要删除元素,则需要在remove这一类算法之后调用erase。

   remove不是真正意义上的删除,因为它做不到。

4.对包含指针的容器使用remove这一类算法时要特别小心。会导致资源泄露。

5.了解哪些算法要求使用排序的区间作为参数。

6.通过mismatch或lexicographical_compare实现简单地忽略大小写的字符串比较

7.理解copy_if算法的正确实现

8.使用accumlate或者for_each进行区间统计。

posted on 2014-06-25 17:06 Daywei 阅读(1416) 评论(0)  编辑 收藏 引用 所属分类: C/C++


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2014年6月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

导航

统计

常用链接

留言簿

随笔分类

随笔档案

文章档案

牛人博客

搜索

积分与排名

最新评论

阅读排行榜