[STL] binary_search

STL/정렬 관련 알고리즘 2010. 5. 17. 15:29 Posted by zetz
<script type="syntaxhighlighter" class="brush:cpp;"><![CDATA[
#include <iostream>
#include <cassert>
#include <algorithm>
#include <vector>

using namespace std;

int main()
{
    cout<< "Illustrating the generic binary search algorithms."<< endl;
    vector<int> v(5);
    bool found;

    // 초기화
    int i;
    for (i=0; i< 5; ++i) v[i] = i;

    // 정수 0, 1, 2, 3, 4를 각각 검색
    for (i=0; i< 5; ++i)
    {
        found = binary_search(v.begin(), v.end(), i);
        assert (found == true);
    }

    // v에 담겨있지 않는 값을 검색
    found = binary_search(v.begin(), v.end(), 9);
    assert(found == false);

    v[1] = 7;   v[2] = 7;   v[3] = 7;   v[4] = 8;

    // 벡터 v에는 0 7 7 7 8이 담겨 있다.

    // v에 upper_bound, lower_bound, equal_range를 적용

    vector<int>::iterator k;
    k = lower_bound(v.begin(), v.end(), 7);
    assert (k == v.begin()+1 && *k == 7);

    k = upper_bound(v.begin(), v.end(), 7);
    assert (k == v.end()-1 && *k == 8);

    pair< vector<int>::iterator, vector<int>::iterator > pi =
        equal_range(v.begin(), v.end(), 7);

    assert (pi.first == v.begin() + 1);
    assert (pi.second == v.end() - 1);
    cout<< " --- Ok."<< endl;

    return 0;
}
]]></script>

'STL > 정렬 관련 알고리즘' 카테고리의 다른 글

[STL] nth_element  (0) 2010.05.17
[STL] min_max  (0) 2010.05.17
[STL] merge  (0) 2010.05.17
[STL] lexicographical_compare  (0) 2010.05.17
[STL] heap  (0) 2010.05.17