lower_bound
값 보다 크거나 지정 된 값을 해당 하는 위치 정렬 기준을 이진 조건자에 지정 될 수 있습니다 있는 순서가 지정 된 범위의 첫 번째 요소의 위치를 찾습니다.
template<class ForwardIterator, class Type>
ForwardIterator lower_bound(
ForwardIterator _First,
ForwardIterator _Last,
const Type& _Val
);
template<class ForwardIterator, class Type, class BinaryPredicate>
ForwardIterator lower_bound(
ForwardIterator _First,
ForwardIterator _Last,
const Type& _Val,
BinaryPredicate _Comp
);
매개 변수
_First
검색할 주소 범위의 첫 번째 요소의 위치는 정방향 반복기입니다._Last
검색할 위치 하나 과거 최종 요소 범위에 있는 주소는 정방향 반복기입니다._Val
위치나 가능한 첫 번째 위치에서 첫 번째 정렬된 범위에서 검색 되는 값입니다._Comp
한 요소가 다른 보다 작은 것이 정의 조건자 함수의 사용자 정의 개체입니다.두 인수를 사용 하 고 반환 하는 이진 술 부 true 만족 스 러 우면 및 거짓 만족 하지 않을 때.
반환 값
이진 술 부와 동등 하 게 지정 되는 위치 첫 번째 요소의 위치 순서가 지정 된 범위의 값 보다 크거나 지정 된 값을 해당 하는 정방향 반복기입니다.
설명
정렬 된 원본 범위 참조 유효 해야 합니다. 모든 반복기는 dereferenceable 이어야 하며 시퀀스에서 마지막 위치에서 첫 번째 접근할 수 여 증분 합니다.
정렬 된 범위를 사용 하려면 먼저입니다 lower_bound 및 순서는 같은 이진 조건부를 지정 합니다.
범위는 알고리즘에 의해 수정 되지 않습니다 lower_bound.
정방향 반복기 값 유형의 작을 해야-비교 보다 주문 두 요소로 지정 되도록 (둘 다 다른 보다 의미)에 해당 하는 나 보다 다른 인지 확인할 수 있습니다.이 결과 nonequivalent 요소 간의 순서
임의 액세스 반복기에 대 한 로그 및 선형 비례 하는 단계 수와 그렇지 않은 경우 알고리즘의 복잡도 (_Last1-_First1).
예제
// alg_lower_bound.cpp
// compile with: /EHsc
#include <vector>
#include <algorithm>
#include <functional> // For greater<int>( )
#include <iostream>
// Return whether modulus of elem1 is less than modulus of elem2
bool mod_lesser ( int elem1, int elem2 )
{
if ( elem1 < 0 )
elem1 = - elem1;
if ( elem2 < 0 )
elem2 = - elem2;
return elem1 < elem2;
}
int main( )
{
using namespace std;
vector <int> v1;
vector <int>::iterator Iter1, Result1;
// Constructing vectors v1a & v1b with default less than ordering
int i;
for ( i = -1 ; i <= 4 ; i++ )
{
v1.push_back( i );
}
int ii;
for ( ii =-3 ; ii <= 0 ; ii++ )
{
v1.push_back( ii );
}
sort ( v1.begin ( ) , v1.end ( ) );
cout << "Original vector v1 with range sorted by the\n "
<< "binary predicate less than is v1 = ( " ;
for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
cout << *Iter1 << " ";
cout << ")." << endl;
// Constructing vectors v2 with range sorted by greater
vector <int> v2 ( v1 );
vector <int>::iterator Iter2, Result2;
sort ( v2.begin ( ) , v2.end ( ) , greater<int> ( ) );
cout << "Original vector v2 with range sorted by the\n "
<< "binary predicate greater is v2 = ( " ;
for ( Iter2 = v2.begin ( ) ; Iter2 != v2.end ( ) ; Iter2++ )
cout << *Iter2 << " ";
cout << ")." << endl;
// Constructing vectors v3 with range sorted by mod_lesser
vector <int> v3 ( v1 );
vector <int>::iterator Iter3, Result3;
sort ( v3.begin ( ) , v3.end ( ) , mod_lesser );
cout << "Original vector v3 with range sorted by the\n "
<< "binary predicate mod_lesser is v3 = ( " ;
for ( Iter3 = v3.begin ( ) ; Iter3 != v3.end ( ) ; Iter3++ )
cout << *Iter3 << " ";
cout << ")." << endl;
// lower_bound of 3 in v1 with default binary predicate less <int> ( )
Result1 = lower_bound ( v1.begin ( ) , v1.end ( ) , 3 );
cout << "The lower_bound in v2 for the element with a value of 3 is: "
<< *Result1 << "." << endl;
// lower_bound of 3 in v2 with the binary predicate greater <int> ( )
Result2 = lower_bound ( v2.begin ( ) , v2.end ( ) , 3, greater <int> ( ) );
cout << "The lower_bound in v2 for the element with a value of 3 is: "
<< *Result2 << "." << endl;
// lower_bound of 3 in v3 with the binary predicate mod_lesser
Result3 = lower_bound ( v3.begin ( ) , v3.end ( ) , 3, mod_lesser );
cout << "The lower_bound in v3 for the element with a value of 3 is: "
<< *Result3 << "." << endl;
}
요구 사항
헤더: <algorithm>
네임 스페이스: std