Ne.app NeANT
The Ne.app NeANT User module of the NeANT distribution.
generate.cpp
Go to the documentation of this file.
1
30#include <algorithm> // for generate, generate_n
31#include <iostream> // for cout, endl
32#include <iterator> // for ostream_iterator
33#include <vector> // for vector
34
35#include <examples.h>
36
37
38// Value generator simply doubles the current value and returns it.
39template <class T>
41{
42 T val_;
43public:
44 generator (const T &val) : val_ (val) { }
46 return val_ += val_;
47 }
48};
49
50
51int main ()
52{
53 // Typedef for convenience.
54 typedef std::vector<short, std::allocator<short> > Vector;
55
56 Vector::value_type arr[4] = { 1, 2, 3, 4 };
57
58 // Set up two vectors.
59 Vector v1 (arr, arr + sizeof arr / sizeof *arr);
60 Vector v2 = v1;
61
62 // Set up one empty vector.
63 Vector v3;
64
65 // Create a generator function object.
67
68 // Generate values for all of v1.
69 std::generate (v1.begin (), v1.end (), gen);
70
71 // Generate values for first 3 of v2.
72 std::generate_n (v2.begin (), 3, gen);
73
74 // Use back_insert_iterator to generate 5 values for v3.
75 std::generate_n (std::back_inserter (v3), 5, gen);
76
77 // Copy all three to cout.
78 std::ostream_iterator<Vector::value_type,
79 char,
80 std::char_traits<char> > out (std::cout, " ");
81
82 std::copy (v1.begin (), v1.end (), out);
83 std::cout << std::endl;
84
85 std::copy (v2.begin (), v2.end (), out);
86 std::cout << std::endl;
87
88 std::copy (v3.begin (), v3.end (), out);
89 std::cout << std::endl;
90
91 // Generate 3 values into cout.
92 std::generate_n (out, 3, gen);
93 std::cout << std::endl;
94
95 return 0;
96}
#define T
Definition 17.names.cpp:163
#define gen
Definition 17.names.cpp:474
#define v2
Definition 17.names.cpp:271
#define val
Definition 17.names.cpp:570
#define v1
Definition 17.names.cpp:245
std::vector< UserClass, std::allocator< UserClass > > Vector
const int out
generator(const T &val)
Definition generate.cpp:44
T operator()()
Definition generate.cpp:45
int main()
Definition generate.cpp:51