generate和generate_n算法

generate和generate_n算法
分类: 数据结构与算法 C++ & API

算法目的用发生器对容器进行填充
template<typename ForwardIterator, typename Generator>
void   generate(ForwardIterator first, ForwardIterator last, Generator gen){
                
for ( ; first != last; ++first)
                          *first = gen();
}
算法目的用发生器对容器从first开始进行填充n次
template<typename   OutputIterator, typename   Size, typename Generator>
OutputIterator   generate_n(OutputIterator first, Size n, Generator gen) {
                            
 for ( ; n > 0; --n, ++first)
                                   *first = gen();
                             
return first;
}
当然为了使用这两个算法,你还要写一个发生器.随便举个例子:
struct Gen{
     
int operator()(){
           
return rand();//产生随机数的函数
     }
};

 

 boost例子

#include <list>
#include <algorithm>
#include <cstdlib>
#include <cassert>
#include <iostream>
#include "windows.h"
#include "time.h"
#include <boost/algorithm/minmax.hpp>
#include <boost/algorithm/minmax_element.hpp>

int main()
{
  using namespace std;

  // Demonstrating minmax()
  boost::tuple<int const&, int const&> result1 = boost::minmax(1, 0);
  assert( result1.get<0>() == 0 );
  assert( result1.get<1>() == 1 );


  // Demonstrating minmax_element()
  list<int> L;
  typedef list<int>::const_iterator iterator;
  srand(time(NULL));
  generate_n(front_inserter(L), 1000, rand);
  pair< iterator, iterator > result2 = boost::minmax_element(L.begin(), L.end());

  cout << "The smallest element is " << *(result2.first) << endl;
  cout << "The largest element is  " << *(result2.second) << endl;

  assert( result2.first  == std::min_element(L.begin(), L.end()) );
  assert( result2.second == std::max_element(L.begin(), L.end()) );
  Sleep(11111111);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值