#include <iostream>
#include <algorithm>
#include <iterator>
#include <functional>
#include <vector>
int rnd()
{
return rand() % 100;
}
//填充区间
int main()
{
/************************************************************************/
//fill
/************************************************************************/
//将range内的[first,last)内的每个元素赋上值value
/*
template<class ForwardIterator, class Type>
void fill(
ForwardIterator _First,
ForwardIterator _Last,
const Type& _Val
);
*/
const int N = 7;
int a[N];
std::fill(std::begin(a), std::end(a), 1);
std::copy(std::begin(a), std::end(a), std::ostream_iterator<int>(std::cout, " ")); //1 1 1 1 1 1 1
std::cout << std::endl;
/************************************************************************/
//fill_n
/************************************************************************/
//fill_n:将range[first,first+n)内的n个元素赋上value
/*
template<class OutputIterator, class Size, class Type>
void fill_n(
OutputIterator _First,
Size _Count,
const Type& _Val
);
*/
std::vector<int> iv;
std::copy(std::begin(a), std::end(a), std::back_inserter(iv));
//上面两句等价于:std::vector<int> iv(std::begin(a), std::end(a));
std::copy(iv.begin(), iv.end(), std::ostream_iterator<int>(std::cout, " "));
//1 1 1 1 1 1 1
std::cout << std::endl;
std::fill_n(iv.begin(), 3, 2);
std::copy(iv.begin(), iv.end(), std::ostream_iterator<int>(std::cout, " "));
//2 2 2 1 1 1 1
std::cout << std::endl;
std::vector<int>::iterator it = iv.begin();
std::advance(it, 2);
std::fill_n(it, 4, 3);
std::copy(iv.begin(), iv.end(), std::ostream_iterator<int>(std::cout, " "));
//2 2 3 3 3 3 1
std::cout << std::endl;
std::fill_n(std::back_inserter(iv), 5, -1);
std::copy(iv.begin(), iv.end(), std::ostream_iterator<int>(std::cout, " "));
//2 2 3 3 3 3 1 -1 -1 -1 -1 -1
std::cout << std::endl;
/************************************************************************/
//generate
/************************************************************************/
//generate:调用Gen生成器,将range[first,last)内的每个元素赋上值
/*
template<class ForwardIterator, class Generator>
void generate(
ForwardIterator _First,
ForwardIterator _Last,
Generator _Gen
);
*/
std::vector<int> iv2(N);
std::generate(iv2.begin(), iv2.end(), rnd);
std::copy(iv2.begin(), iv2.end(), std::ostream_iterator<int>(std::cout, " "));
std::cout << std::endl;
/************************************************************************/
//generate_n
/************************************************************************/
//generate_n:调用Gen生成器,将range[first,first+n)内的每个元素赋上值
/*
template<class OutputIterator, class Diff, class Generator>
void generate_n(
OutputIterator First,
Diff Count,
Generator Gen
);
*/
std::generate_n(std::ostream_iterator<int>(std::cout, " "), 10, rnd);
std::cout << std::endl;
std::vector<int> iv3;
std::generate_n(std::back_inserter(iv3), 10, rnd);
std::copy(iv3.begin(), iv3.end(), std::ostream_iterator<int>(std::cout, " "));
std::cout << std::endl;
return 0;
}
====================打个广告,欢迎关注====================
QQ: | 412425870 |
csdn博客: | http://blog.csdn.net/caychen |
码云: | https://gitee.com/caychen/ |
github: | https://github.com/caychen |
点击群号或者扫描二维码即可加入QQ群: | |