STL_算法_查找算法(binary_search、includes)

C++ Primer 学习中。。。

 

简单记录下我的学习过程 (代码为主)


所有容器适用(O(log(n)))     已序区间查找算法


binary_search             //二分查找,返回bool值,


includes                    //包含查找,返回bool值。



#include
#include
#include
#include
#include
using namespace std;
/*****************************************
//所有容器适用(O(log(n)))
已序区间查找算法
binary_search()             //二分查找,返回bool值,
includes()                  //包含查找,返回bool值。
*****************************************/
/*************************************************************************************
std::binary_search              所有排序容器适用                           algorithm
--------------------------------------------------------------------------------------
template 
  bool binary_search ( ForwardIterator first, ForwardIterator last,
                       const T& value );

template 
  bool binary_search ( ForwardIterator first, ForwardIterator last,
                       const T& value, Compare comp );

//eg:
template 
    bool binary_search ( ForwardIterator first, ForwardIterator last, const T& value )
    {
        first = lower_bound(first,last,value);
        return (first!=last && !(value<*first));
    }
*************************************************************************************/

/*************************************************************************************
std::includes                   所有排序容器适用                           algorithm
--------------------------------------------------------------------------------------
template 
  bool includes ( InputIterator1 first1, InputIterator1 last1,
                  InputIterator2 first2, InputIterator2 last2 );

template 
  bool includes ( InputIterator1 first1, InputIterator1 last1,
                  InputIterator2 first2, InputIterator2 last2, Compare comp );

//eg:
template 
    bool includes ( InputIterator1 first1, InputIterator1 last1,
                  InputIterator2 first2, InputIterator2 last2 )
    {
        while (first1!=last1)
        {
            if (*first2<*first1) break;
            else if (*first1<*first2) ++first1;
            else { ++first1; ++first2; }
            if (first2==last2) return true;
        }
        return false;
    }
*************************************************************************************/

bool myfunction (int i,int j)  { return (i v(myints,myints+9);                         // 1 2 3 4 5 4 3 2 1

    // using default comparison:
    sort (v.begin(), v.end());

    cout << "looking for a 3...  ";
    if (binary_search (v.begin(), v.end(), 3))
    cout << "found!\n"; else cout << "not found.\n";

    // using myfunction as comp:
    sort (v.begin(), v.end(), myfunction);

    cout << "looking for a 6... ";
    if (binary_search (v.begin(), v.end(), 6, myfunction))
        cout << "found!\n"; else cout << "not found.\n";
    cout<

你可能感兴趣的:(c++,prime,STL_算法,程序员面试金典)