31#if defined (__IBMCPP__) && !defined (_RWSTD_NO_IMPLICIT_INCLUSION)
35# define _RWSTD_NO_IMPLICIT_INCLUSION
53 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
64typedef std::ostream_iterator<int, char, std::char_traits<char> >
Iter;
68 std::cout <<
"Sort algorithms\n";
70 Iter intOut (std::cout,
" ");
73 std::vector<int, std::allocator<int> > aVec (15);
74 std::deque<int, std::allocator<int> > aDec (15);
75 std::generate (aVec.begin (), aVec.end (),
randomValue);
76 std::generate (aDec.begin (), aDec.end (),
randomValue);
79 std::sort (aVec.begin (), aVec.end ());
80 std::copy (aVec.begin (), aVec.end (), intOut);
84 std::sort (aDec.begin (), aDec.end (), std::greater<int>() );
85 std::copy (aDec.begin (), aDec.end (), intOut);
89 std::sort (aVec.rbegin (), aVec.rend ());
90 std::copy (aVec.begin (), aVec.end (), intOut);
96 std::cout <<
"Partial sort examples\n";
98 Iter intOut (std::cout,
" ");
101 std::vector<int, std::allocator<int> > aVec (15);
102 std::generate (aVec.begin (), aVec.end (),
randomValue);
103 std::copy (aVec.begin (), aVec.end (), intOut);
107 std::partial_sort (aVec.begin (), aVec.begin () + 7, aVec.end ());
108 std::copy (aVec.begin (), aVec.end (), intOut);
112 std::list<int, std::allocator<int> > aList (15);
113 std::generate (aList.begin (), aList.end (),
randomValue);
114 std::copy (aList.begin (), aList.end (), intOut);
118 std::vector<int, std::allocator<int> >
start (7);
119 std::partial_sort_copy (aList.begin (), aList.end (),
120 start.begin (),
start.end (), std::greater<int>());
121 std::copy (
start.begin (),
start.end (), intOut);
129 std::cout <<
"Nth largest example\n";
132 std::vector<int, std::allocator<int> > aVec (10);
133 std::generate (aVec.begin (), aVec.end (),
randomValue);
135 Iter intOut (std::cout,
" ");
138 std::vector<int, std::allocator<int> >::iterator nth = aVec.begin () + 4;
139 std::nth_element (aVec.begin (), nth, aVec.end ());
140 std::cout <<
"fifth largest is " << *nth <<
" in\n";
141 std::copy (aVec.begin (), aVec.end (), intOut);
149 std::cout <<
"Binary search example\n";
151 Iter intOut (std::cout,
" ");
154 std::vector<int, std::allocator<int> > aVec (15);
155 std::generate (aVec.begin (), aVec.end (),
randomValue);
156 std::sort (aVec.begin (), aVec.end ());
157 std::copy (aVec.begin (), aVec.end (), intOut), std::cout <<
'\n';
160 if (std::binary_search (aVec.begin (), aVec.end (), 11))
161 std::cout <<
"contains an 11\n";
163 std::cout <<
"does not contain an 11\n";
166 std::vector<int, std::allocator<int> >::iterator where;
167 where = std::lower_bound (aVec.begin (), aVec.end (), 11);
168 aVec.insert (where, 11);
169 where = std::upper_bound (aVec.begin (), aVec.end (), 14);
170 aVec.insert (where, 14);
171 std::copy (aVec.begin (), aVec.end (), intOut), std::cout <<
'\n';
178 std::cout <<
"Merge algorithm examples\n";
181 std::vector<int, std::allocator<int> > aVec (10);
182 std::list<int, std::allocator<int> > aList (10);
183 std::generate (aVec.begin (), aVec.end (),
randomValue);
184 std::sort (aVec.begin (), aVec.end ());
189 std::vector<int, std::allocator<int> > vResult (aVec.size () + aList.size ());
190 std::merge (aVec.begin (), aVec.end (), aList.begin (), aList.end (),
194 std::list<int, std::allocator<int> > lResult;
195 std::merge (aVec.begin (), aVec.end (), aList.begin (), aList.end (),
196 std::inserter (lResult, lResult.begin ()));
199 std::merge (aVec.begin (), aVec.end (), aList.begin (), aList.end (),
200 Iter (std::cout,
" "));
218 std::cout <<
"Set operations:\n";
221 std::list <int, std::allocator<int> > listOne, listTwo;
222 std::generate_n (std::inserter (listOne, listOne.begin ()), 5,
iotaGen (1));
223 std::generate_n (std::inserter (listTwo, listTwo.begin ()), 5,
iotaGen (3));
225 Iter intOut (std::cout,
" ");
228 std::set_union (listOne.begin (), listOne.end (),
229 listTwo.begin (), listTwo.end (), intOut);
233 std::merge (listOne.begin (), listOne.end (),
234 listTwo.begin (), listTwo.end (), intOut);
238 std::set_intersection (listOne.begin (), listOne.end (),
239 listTwo.begin (), listTwo.end (), intOut);
243 std::set_difference (listOne.begin (), listOne.end (),
244 listTwo.begin (), listTwo.end (), intOut);
248 std::set_symmetric_difference (listOne.begin (), listOne.end (),
249 listTwo.begin (), listTwo.end (),
253 if (std::includes (listOne.begin (), listOne.end (),
254 listTwo.begin (), listTwo.end ()))
255 std::cout <<
"set is subset\n";
257 std::cout <<
"set is not subset\n";
264 Iter intOut (std::cout,
" ");
267 std::vector<int, std::allocator<int> > aVec (15);
268 std::generate (aVec.begin (), aVec.end (),
randomValue);
269 std::make_heap (aVec.begin (), aVec.end ());
270 std::copy (aVec.begin (), aVec.end (), intOut);
271 std::cout <<
"\nLargest value " << aVec.front () <<
'\n';
274 std::pop_heap (aVec.begin (), aVec.end ());
276 std::copy (aVec.begin (), aVec.end (), intOut);
281 std::push_heap (aVec.begin (), aVec.end ());
282 std::copy (aVec.begin (), aVec.end (), intOut);
286 std::sort_heap (aVec.begin (), aVec.end ());
287 std::copy (aVec.begin (), aVec.end (), intOut);
293 std::cout <<
"Sorting generic algorithms examples\n";
303 std::cout <<
"End sorting examples\n";
void nth_element_example()
void partial_sort_example()
void binary_search_example()
std::ostream_iterator< int, char, std::char_traits< char > > Iter