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

STL

开发平台:

C/C++

  1. //文件名:CHAPTER11-23.cpp
  2. #include <vector>
  3. #include <algorithm>
  4. #include <functional>      //For greater<int>( )
  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 )
  10.       elem1 = - elem1;
  11.    if ( elem2 < 0 )
  12.       elem2 = - elem2;
  13.    return elem1 < elem2;
  14. }
  15. int main( )
  16. {
  17.    using namespace std;
  18.    vector <int> v1;
  19.    vector <int>::iterator Iter1;
  20.    pair < vector <int> :: iterator , vector <int> :: iterator > Result1, Result2, Result3;
  21.    // Constructing vectors v1a & v1b with default less than ordering
  22.    int i;
  23.    for ( i = -1 ; i <= 4 ; i++ )
  24.    {      v1.push_back(  i );   }
  25.    int ii;
  26.    for ( ii =-3 ; ii <= 0 ; ii++ )
  27.    {      v1.push_back( ii );   }
  28.    sort ( v1.begin ( ) , v1.end ( ) );
  29.    cout << "Original vector v1 with range sorted by then "
  30.         <<  "binary predicate less than is  v1 = ( " ;
  31.    for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
  32.       cout << *Iter1 << " ";
  33.    cout << ")." << endl;
  34.    // Constructing vectors v2 with range sorted by greater
  35.    vector <int> v2 ( v1 );
  36.    vector <int>::iterator Iter2;
  37.    sort ( v2.begin ( ) , v2.end ( ) , greater<int> ( ) );
  38.    cout << "Original vector v2 with range sorted by then "
  39.         <<  "binary predicate greater is    v2 = ( " ;
  40.    for ( Iter2 = v2.begin ( ) ; Iter2 != v2.end ( ) ; Iter2++ )
  41.       cout << *Iter2 << " ";
  42.    cout << ")." << endl;
  43.    // Constructing vectors v3 with range sorted by mod_lesser
  44.    vector <int> v3 ( v1 );
  45.    vector <int>::iterator Iter3;
  46.    sort ( v3.begin ( ) , v3.end ( ) , mod_lesser );
  47.    cout << "Original vector v3 with range sorted by then "
  48.         << "binary predicate mod_lesser is v3 = ( " ;
  49.    for ( Iter3 = v3.begin ( ) ; Iter3 != v3.end ( ) ; Iter3++ )
  50.       cout << *Iter3 << " ";
  51.    cout << ")." << endl << endl;
  52.    // equal_range of 3 in v1 with default binary predicate less <int> ( )
  53.    Result1 = equal_range ( v1.begin ( ) , v1.end ( ) , 3 );
  54.    cout << "The lower_bound in v1 for the element with a value of 3 is: "
  55.         << *Result1.first << "." << endl;
  56.    cout << "The upper_bound in v1 for the element with a value of 3 is: "
  57.         << *Result1.second << "." << endl;
  58.    cout << "The equivalence class for the element with a value of 3 in"
  59.         << "n v1 includes the elements: ( ";
  60.    for ( Iter1 = Result1.first ; Iter1 != Result1.second ; Iter1++ )
  61.       cout << *Iter1 << " ";
  62.    cout << ")." << endl << endl;
  63.    // equal_range of 3 in v2 with the binary predicate greater <int> ( )
  64.    Result2 = equal_range ( v2.begin ( ) , v2.end ( ) , 3 , greater <int> ( ) );
  65.    cout << "The lower_bound in v2 for the element with a value of 3 is: "
  66.         << *Result2.first << "." << endl;
  67.    cout << "The upper_bound in v2 for the element with a value of 3 is: "
  68.         << *Result2.second << "." << endl;
  69.    cout << "The equivalence class for the element with a value of 3 in"
  70.         << "n v2 includes the elements: ( ";
  71.    for ( Iter2 = Result2.first ; Iter2 != Result2.second ; Iter2++ )
  72.       cout << *Iter2 << " ";
  73.    cout << ")." << endl << endl;
  74.    // equal_range of 3 in v3 with the binary predicate mod_lesser
  75.    Result3 = equal_range ( v3.begin ( ) , v3.end ( ) , 3 ,mod_lesser );
  76.    cout << "The lower_bound in v3 for the element with a value of 3 is: "
  77.         << *Result3.first << "." << endl;
  78.    cout << "The upper_bound in v3 for the element with a value of 3 is: "
  79.         << *Result3.second << "." << endl;
  80.    cout << "The equivalence class for the element with a value of 3 in"
  81.         << "n v3 includes the elements: ( ";
  82.    for ( Iter3 = Result3.first ; Iter3 != Result3.second ; Iter3++ )
  83.       cout << *Iter3 << " ";
  84.    cout << ")." << endl << endl;
  85. }