1: //partition_copy1a.cpp
3: #include <iostream>
4: #include <vector>
5: #include <algorithm>
6: #include <iterator>
7: using namespace std;
9: int main()
10: {
11: cout << "\nThis program illustrates the use of the STL "
12: "partition_copy() algorithm from\n<algorithm> to copy the "
13: "odd integers from a vector to one destination and the\neven "
14: "integers from the same vector to another destination.";
15: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
17: int a[] = {3, 8, 35, 9, 24, 6, 13, 35, 4, 9, 2, 44, 7};
18: vector<int> v(begin(a), end(a));
19: vector<int> odds(7);
20: vector<int> evens(10,1);
22: auto iterPair = partition_copy(v.begin(), v.end(),
23: odds.begin(), evens.begin(),
24: [](int n) {return n%2==1;});
26: copy(v.begin(), v.end(), ostream_iterator<int>(cout, " "));
27: cout << endl;
28: copy(odds.begin(), odds.end(), ostream_iterator<int>(cout, " "));
29: cout << endl;
30: copy(evens.begin(), evens.end(), ostream_iterator<int>(cout, " "));
31: cout << endl;
33: if (iterPair.first == odds.end())
34: cout << "\nFirst iterator returned points at destination end().";
35: else
36: cout << "\nFirst iterator returned points at " << *iterPair.first << ".";
38: if (iterPair.second == evens.end())
39: cout << "\nSecond iterator returned points at destination end().";
40: else
41: cout << "\nSecond iterator returned points at " << *iterPair.second << ".";
42: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
43: }