|
VMS Help CXXLSTD, Algorithms, lexicographical_compare *Conan The Librarian |
Standard C++ Library
Copyright 1996, Rogue Wave Software, Inc.
NAME
lexicographical_compare - Compares two ranges lexicographically.
SYNOPSIS
#include <algorithm>
template <class InputIterator1, class InputIterator2>
bool
lexicographical_compare(InputIterator1 first,
InputIterator2 last1,
InputIterator2 first2,
InputIterator last2);
template <class InputIterator1, class InputIterator2, class Compare>
bool
lexicographical_compare(InputIterator1 first,
InputIterator2 last1,
InputIterator2 first2,
InputIterator last2, Compare comp);
DESCRIPTION
The lexicographical_compare functions compare each element in the
range [first1, last1) to the corresponding element in the range
[first2, last2) using iterators i and j.
The first version of the algorithm uses operator< as the default
comparison operator. It immediately returns true if it
encounters any pair in which *i is less than *j, and immediately
returns false if *j is less than *i. If the algorithm reaches the
end of the first sequence before reaching the end of the second
sequence, it also returns true.
The second version of the function takes an argument comp that
defines a comparison function that is used in place of the default
operator<.
The lexicographical_compare functions can be used with all the
datatypes provided by the standard library.
COMPLEXITY
lexicographical_compare performs at most min((last1 - first1),
(last2 - first2)) applications of the comparison
function.
EXAMPLE
//
// lex_comp.cpp
//
#include <algorithm>
#include <vector>
#include <iostream.h>
int main(void)
{
int d1[5] = {1,3,5,32,64};
int d2[5] = {1,3,2,43,56};
// set up vector
vector<int> v1(d1,d1 + 5), v2(d2,d2 + 5);
// Is v1 less than v2 (I think not)
bool b1 = lexicographical_compare(v1.begin(),
v1.end(), v2.begin(), v2.end());
// Is v2 less than v1 (yup, sure is)
bool b2 = lexicographical_compare(v2.begin(),
v2.end(), v1.begin(), v1.end(), less<int>());
cout << (b1 ? "TRUE" : "FALSE") << " "
<< (b2 ? "TRUE" : "FALSE") << endl;
return 0;
}
Output:
FALSE TRUE
WARNING
If your compiler does not support default template parameters, then
you need to always supply the Allocator template argument. For
instance, you'll have to write :
vector<int, allocator<int> >
instead of :
vector<int>
STANDARDS CONFORMANCE
ANSI X3J16/ISO WG21 Joint C++ Committee
|
|