topical media & game development
professional-program-22-NonModifyingAlgorithms-ComparisonAlgorithms.c
? /
professional-program-22-NonModifyingAlgorithms-ComparisonAlgorithms.c
include <algorithm>
include <vector>
include <list>
include <iostream>
using namespace std;
// Function template to populate a container of ints.
// The container must support push_back().
template<typename Container>
void populateContainer(Container& cont)
{
int num;
while (true) {
cout << "Enter a number (0 to quit): ";
cin >> num;
if (num == 0) {
break;
}
cont.push_back(num);
}
}
int main(int argc, char** argv)
{
vector<int> myVector;
list<int> myList;
cout << "Populate the vector:\n";
populateContainer(myVector);
cout << "Populate the list:\n";
populateContainer(myList);
if (myList.size() < myVector.size()) {
cout << "Sorry, the list is not long enough.\n";
return (0);
}
// compare the two containers
if (equal(myVector.begin(), myVector.end(), myList.begin())) {
cout << "The two containers have equal elements\n";
} else {
// If the containers were not equal, find out why not
pair<vector<int>::iterator, list<int>::iterator> miss =
mismatch(myVector.begin(), myVector.end(), myList.begin());
cout << "The first mismatch is at position "
<< miss.first - myVector.begin() << ". The vector has value "
<< *(miss.first) << " and the list has value " << *(miss.second)
<< endl;
}
// Now order them
if (lexicographical_compare(myVector.begin(), myVector.end(), myList.begin(),
myList.end())) {
cout << "The vector is lexicographically first.\n";
} else {
cout << "The list is lexicographically first.\n";
}
return (0);
}
(C) Æliens
20/2/2008
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.