1: //mismatch1a.cpp
3: #include <iostream>
4: #include <vector>
5: #include <algorithm>
6: #include <utility>
7: using namespace std;
9: int main()
10: {
11: cout << "\nThis program illustrates the use of the STL mismatch() "
12: "algorithm (default\nversion) to find pairs of mismatched "
13: "values in two ranges of integers from\ntwo vectors of integers "
14: "when simple equality is used to determine if two\ninteger "
15: "values match.";
16: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
18: int a1[] = {4, 3, 7, 5, 6};
19: vector<int> v1(a1, a1+5);
20: cout << "\nHere are the contents of v1:\n";
21: for (vector<int>::size_type i=0; i<v1.size(); i++)
22: cout << v1.at(i) << " ";
23: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
25: int a2[] = {1, 2, 4, 3, 1, 5, 6, 8, 9, 10};
26: vector<int> v2(a2, a2+10);
27: cout << "\nHere are the contents of v2:\n";
28: for (vector<int>::size_type i=0; i<v2.size(); i++)
29: cout << v2.at(i) << " ";
30: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
32: pair<vector<int>::iterator, vector<int>::iterator> mismatches;
34: cout << "\nNow we compare the sequence in v1 with the sequence "
35: "\nstarting at the third value in v2.";
36: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
38: mismatches = mismatch(v1.begin(), v1.end(), v2.begin()+2);
39: if (mismatches.first == v1.end())
40: cout << "\nThe two sequences match fully.";
41: else
42: cout << "\nThe first pair of mismatched values are\n"
43: << *mismatches.first << " from the first range, and\n"
44: << *mismatches.second << " from the second range.";
45: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
47: int a3[] = {4, 3, 7, 5, 6, 2, 10, 9};
48: vector<int> v3(a3, a3+8);
49: cout << "\nHere are the contents of v3:\n";
50: for (vector<int>::size_type i=0; i<v3.size(); i++)
51: cout << v3.at(i) << " ";
52: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
54: cout << "\nFinally, we compare the sequence in v1 with the "
55: "sequence in v3.";
56: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
58: mismatches = mismatch(v1.begin(), v1.end(), v3.begin());
59: if (mismatches.first == v1.end())
60: {
61: cout << "\nThe two sequences match fully.";
62: cout << "\nThe second iterator of the pair returned points at\n"
63: << *mismatches.second << " in the second range (in v2).";
64: }
65: else
66: cout << "\nThe first pair of mismatched values are\n"
67: << *mismatches.first << " from the first range, and\n"
68: << *mismatches.second << " from the second range.";
69: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n');
70: }