设为首页 加入收藏

TOP

4.4.4 减少重复输入
2013-10-07 15:00:27 来源: 作者: 【 】 浏览:73
Tags:4.4.4 减少 重复 输入

4.4.4  减少重复输入

在填充数据时有的时候要输入重复数据,如果用之前的方法要写大量的重复代码,很麻烦也容易造成多写或少写的错误。assign库提供repeat()、repeat_fun()和range()三个函数来减轻工作量。

这三个函数的简要声明如下:

  1. template< class U > 
  2. generic_list& repeat( std::size_t sz, U u );  
  3.  
  4. template< class Nullary_function > 
  5. generic_list& repeat_fun( std::size_t sz, Nullary_function fun );  
  6.  
  7. template< class SinglePassIterator > 
  8. generic_list& range( SinglePassIterator first,   
  9.                      SinglePassIterator last );  
  10. template< class SinglePassRange > 
  11. generic_list& range( const SinglePassRange& r )  

repeat()函数把第二个参数作为要填入的值,重复第一个参数指定的次数,与vector、deque等容器的构造函数很相似;repeat_fun()函数同样重复第一个参数的次数,但第二个参数是个无参的函数或函数对象,它返回填入的数值;range()函数则可以把一个序列全部或者部分元素插入到另一个序列里。

示范它们用法的代码如下:

  1. #include <boost/assign.hpp> 
  2. #include <cstdlib>                          //for rand()  
  3. int main()  
  4. {  
  5.     using namespace boost::assign;  
  6.  
  7.     vector<int> v = list_of(1).repeat(3, 2)(3)(4)(5);  
  8.     //v = 1,2,2,2,3,4,5  
  9.  
  10.     multiset<int> ms ;  
  11.     insert(ms).repeat_fun(5, &rand).repeat(2, 1), 10;  
  12.     //ms = x,x,x,x,x,1,1,10  
  13.  
  14.     deque<int> d;  
  15.     push_front(d).range(v.begin(), v.begin() + 5);  
  16.     //d = 3,2,2,2,1  
  17. }  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇4.4.3 初始化容器元素 下一篇4.5.5 使用建议

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: