CHAPTER11-22.cpp
上传用户:fjc899
上传日期:2007-07-03
资源大小:187k
文件大小:2k
源码类别:

STL

开发平台:

C/C++

  1. //文件名:CHAPTER11-22.cpp
  2. #include <list>
  3. #include <vector>
  4. #include <algorithm>
  5. #include <iostream>
  6. // Return whether modulus of elem1 is less than modulus of elem2
  7. bool mod_lesser ( int elem1, int elem2 )
  8. {
  9.    if (elem1 < 0)      elem1 = - elem1;
  10.    if (elem2 < 0)      elem2 = - elem2;
  11.    return elem1 < elem2;
  12. }
  13. int main( )
  14. {
  15.    using namespace std;
  16.    list <int> L;
  17.    list <int>::iterator Iter;
  18.    bool b1, b2;
  19.    L.push_back( 50 );
  20.    L.push_back( 10 );
  21.    L.push_back( 30 );
  22.    L.push_back( 20 );
  23.    L.push_back( 25 );
  24.    L.push_back( 5 );
  25.    L.sort( );
  26.    cout << "L = ( " ;
  27.    for ( Iter = L.begin( ) ; Iter != L.end( ) ; Iter++ )
  28.       cout << *Iter << " ";
  29.    cout << ")" << endl;
  30.    b1 = binary_search( L.begin( ), L.end( ), 10 );
  31.    if  ( b1 )
  32.       cout << "There is an element in list L with a value equal to 10."<< endl;
  33.    else
  34.       cout << "There is no element in list L with a value equal to 10."<< endl;
  35.    // a binary_search under the binary predicate greater
  36.    L.sort ( greater<int> ( ) );
  37.    b2 = binary_search( L.begin( ), L.end( ), 10 , greater<int> ( ) );
  38.    if  ( b2 )
  39.       cout << "There is an element in list L with a value equivalent to 10 "
  40.            << "under greater than." << endl;
  41.    else
  42.       cout << "No element in list L with a value equivalent to 10 "<< "under greater than." << endl;
  43.    // a binary_search under the user-defined binary predicate mod_lesser
  44.    vector <int> v1;
  45.    vector <int>::iterator Iter1;
  46.    int i;
  47.    for ( i = -2 ; i <= 4 ; i++ )
  48.    {      v1.push_back( i );   }
  49.    sort ( v1.begin ( ) , v1.end ( ) , mod_lesser );
  50.    cout << "Ordered under mod_lesser, vector v1 = ( " ;
  51.    for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
  52.       cout << *Iter1 << " ";
  53.    cout << ")" << endl;
  54.    bool b3 = binary_search( v1.begin( ), v1.end( ), -3 , mod_lesser );
  55.    if ( b3 )
  56.       cout << "There is an element with a value equivalent to -3 "<< "under mod_lesser." << endl;
  57.    else
  58.       cout << "There is not an element with a value equivalent to -3 "
  59. << "under mod_lesser." << endl;
  60. }