1: //list16.cpp
3: #include <iostream>
4: #include <list>
5: using namespace std;
7: bool bothDivisibleByThree
8: (
9: int m, //in
10: int n //in
11: )
12: /**<
13: Determine if two integers are both divisible by 3.
14: @return true if both input integers are divisible by 3, and
15: otherwise false.
16: @param m An integer.
17: @param n An integer.
18: @pre m and n both contain an integer.
19: @post Returns
20: */
21: {
22: return (m%3 == 0) && (n%3 == 0);
23: }
25: int main()
26: {
27: cout << "\nThis program illustrates the unique() "
28: "member function for list objects.";
29: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
31: int a[] = {1, 2, 2, 3, 6, 5, 2, 6, 9, 12, 2, 2, 2, 9, 10, 11, 12};
32: list<int> lst(a, a+17);
33: cout << "\nFor the starting list we have:";
34: cout << "\nSize = " << lst.size();
35: cout << "\nContents: ";
36: list<int>::iterator p = lst.begin();
37: while (p!= lst.end()) cout << *p++ << " ";
38: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
40: cout << "\nNow we remove all adjacent duplicate copies of "
41: "\nthe value 2 and redisplay the list to confirm:";
42: lst.unique();
43: p = lst.begin();
44: cout << "\nSize = " << lst.size();
45: cout << "\nContents: ";
46: while (p!= lst.end()) cout << *p++ << " ";
47: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
49: cout << "\nFinally we remove all adjacent duplicate values "
50: "\ndivisible by 3 and redisplay the list to confirm:";
51: lst.unique(bothDivisibleByThree);
52: p = lst.begin();
53: cout << "\nSize = " << lst.size();
54: cout << "\nContents: ";
55: while (p!= lst.end()) cout << *p++ << " ";
56: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
57: }