容器的常用“操作”或“算法”

使用泛型算法必须包含 algorithm 头文件:

#include <algorithm> 

使用泛化的算术算法必须包含numeric 头文件:

#include <numeric>

 

操作
用法或功能操作名称备注
  .begin() 
  .end() 
  .size() 
  push_back 
  erase 
  find 

另外,泛型算法的相关章节提到一个“迭代器适配器”,在容器的算法和操作中有一定用处:“ back_inserter”

算法
用法或功能算法名称备注
 accumulate 
 find_first_of 
 fill 
 fill_n 
  copy 当“要以一个已存在的容器为副本创建新容器时,更好的方法是直接用输入范围作为新构造容器的初始化式”,而不是copy
  replace  
 replace_copy  
 unique_copy_copy版本,unique_copy(vec.begin(), vec.end(), output); 该算法将输入范围中不重复的值复制到目标迭代器。
  unique 
  stable_sort 
  count_if 
 sort 标准库定义的四种排序算法最简单的一个:使字符串中的单词按照“字典次序排列”
 stable_sort稳定排序:保留相等元素的原始相对位置
   
   
   

 在学习“泛型算法”这一节的相关算法时,首次遇到“谓词”这个概念:“谓词是做某些检测的函数,返回用于条件判断的类型,指出条件是否成立。”,《C++ Primer》中指出:“使用这些算法,还需要一个配套的实用函数,,称为谓词”,下面是两个谓词使用的例子,注意它与普通函数使用的不同:

1      // comparison function to be used to sort by word length 
2      bool isShorter(const string &s1, const string &s2) 
3      { 
4          return s1.size() < s2.size(); 
5      } 
1     // determine whether a length of a given word is 6 or more 
2      bool GT6(const string &s) 
3      { 
4           return s.size() >= 6; 
5      }

这两个谓词函数都是有形参的,但在使用他们的时候,仅仅用到了名字,如下:

1  // sort words by size, but maintain alphabetic order for words of the same size 
2      stable_sort(words.begin(), words.end(), isShorter);
1      vector<string>::size_type wc = 
2                   count_if(words.begin(), words.end(), GT6); 

这点的具体实现还要去算法“stable_sort和count_if”中去查看。

 

 备注“算法的搜索方法”:

在MSDN中搜索“stable_sort”,打开“stable_sort - MSDN – the Microsoft Developer Network‎”以后,左侧的树形菜单列出“algorithm”头文件下的相关算法,很多,有必要去了解一下。

 

 

转载于:https://www.cnblogs.com/tingshuixuan2012/archive/2013/04/29/3050521.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值