generate
来源:互联网 发布:淘宝新规订单险 编辑:程序博客网 时间:2024/06/05 00:48
#include <iostream>using std::cout;using std::endl;#include <algorithm>#include <vector>#include <iterator>char nextLetter();int main(){ std::vector< char > chars( 10 ); std::ostream_iterator< char > output( cout, " " ); // generate values for all elements of chars with nextLetter std::generate( chars.begin(), chars.end(), nextLetter ); cout << "\n\nVector chars after generating letters A-J:\n"; std::copy( chars.begin(), chars.end(), output ); cout << endl; return 0;}// generator function returns next letter (starts with A)char nextLetter() { static char letter = 'A'; return letter++;}/* Vector chars after generating letters A-J:A B C D E F G H I J */
#include <iostream>#include <cassert>#include <algorithm>#include <vector>using namespace std;template <typename T>class calc_square { T i; public: calc_square(): i(0) {} T operator()() { ++i; return i * i; }};int main(){ vector<int> vector1(10); generate(vector1.begin(), vector1.end(), calc_square<int>()); for (int j = 0; j < 10; ++j) cout << vector1[j] << " "; return 0;}/* 1 4 9 16 25 36 49 64 81 100 */
#include <iostream>#include <list>#include <algorithm>using namespace std;/* PRINT_ELEMENTS() * - prints optional C-string optcstr followed by * - all elements of the collection coll * - separated by spaces */template <class T>inline void PRINT_ELEMENTS (const T& coll, const char* optcstr=""){ typename T::const_iterator pos; std::cout << optcstr; for (pos=coll.begin(); pos!=coll.end(); ++pos) { std::cout << *pos << ' '; } std::cout << std::endl;}class IntSequence { private: int value; public: // constructor IntSequence (int initialValue) : value(initialValue) { } // ''function call'' int operator() () { return value++; }};int main(){ list<int> coll; // insert values from 1 to 9 generate_n (back_inserter(coll), // start 9, // number of elements IntSequence(1)); // generates values PRINT_ELEMENTS(coll); // replace second to last element but one with values starting at 42 generate (++coll.begin(), // start --coll.end(), // end IntSequence(42)); // generates values PRINT_ELEMENTS(coll);}/* 1 2 3 4 5 6 7 8 91 42 43 44 45 46 47 48 9 */
#include <cstdlib>#include <iostream>#include <vector>#include <deque>#include <list>#include <set>#include <map>#include <string>#include <algorithm>#include <iterator>#include <functional>#include <numeric>/* PRINT_ELEMENTS() * - prints optional C-string optcstr followed by * - all elements of the collection coll * - separated by spaces */template <class T>inline void PRINT_ELEMENTS (const T& coll, const char* optcstr=""){ typename T::const_iterator pos; std::cout << optcstr; for (pos=coll.begin(); pos!=coll.end(); ++pos) { std::cout << *pos << ' '; } std::cout << std::endl;}/* INSERT_ELEMENTS (collection, first, last) * - fill values from first to last into the collection * - NOTE: NO half-open range */template <class T>inline void INSERT_ELEMENTS (T& coll, int first, int last){ for (int i=first; i<=last; ++i) { coll.insert(coll.end(),i); }}using namespace std;int main(){ list<int> coll; // insert five random numbers generate_n (back_inserter(coll), // beginning of destination range 5, // count rand); // new value generator // overwrite with five new random numbers generate (coll.begin(), coll.end(), // destination range rand); // new value generator PRINT_ELEMENTS(coll);}/* 15724 11478 29358 26962 24464 */