1: //replace_if1a.cpp
3: #include <iostream>
4: #include <vector>
5: #include <algorithm>
6: using namespace std;
8: /**
9: Determines if an integer is divisible by 3.
10: Pre:\n n contains an integer.
11: Post:\n Returns true if n is divisible by 3, and otherwise false.
12: */
13: bool isDivisibleByThree
14: (
15: int n //in
16: )
17: {
18: return (n%3 == 0);
19: }
21: int main()
22: {
23: cout << "\nThis program illustrates the use of the STL "
24: "replace_if() algorithm to\nreplace all copies of a given "
25: "value in a vector of integers that satisfy\na given "
26: "predicate with another value.";
27: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
29: int a[] = {1, 2, 2, 3, 4, 5, 2, 6};
30: vector<int> v(a, a+8);
32: cout << "\nHere are the values in the vector:\n";
33: for (vector<int>::size_type i=0; i<v.size(); i++)
34: cout << v.at(i) << " ";
35: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
37: cout << "\nNow we replace all values divisble by 3 with 123.";
38: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
39: replace_if(v.begin(), v.end(), isDivisibleByThree, 123);
41: cout << "\nHere are the revised contents of the vector:\n";
42: for (vector<int>::size_type i=0; i<v.size(); i++)
43: cout << v.at(i) << " ";
44: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
45: }