C++ lowerbound upperbound

오현진·2024년 7월 1일

C++ 

목록 보기
18/26
#include <iostream>
#include <algorithm> 
#include <vector>

using namespace std;

int main() {
    vector<int> v = {10, 20, 30, 30, 30, 40, 50};

    auto lower = lower_bound(v.begin(), v.end(), 30);
    auto upper = upper_bound(v.begin(), v.end(), 30);

    cout << lower - v.begin() << endl;  // 2
    cout << upper - v.begin() << endl;  // 5
    cout << *lower << endl; // 30
    cout << *upper << endl; // 40

    return 0;
}

lower와 upper의 타입은 std::vector::iterator입니다. 이는 벡터의 반복자 타입입니다.

이를 코드로 명시적으로 표현하면 다음과 같습니다:

std::vector<int>::iterator lower = std::lower_bound(v.begin(), v.end(), 30);
std::vector<int>::iterator upper = std::upper_bound(v.begin(), v.end(), 30);

하지만 대부분의 경우 auto 키워드를 사용하여 컴파일러가 타입을 추론하도록 합니다.

이 반복자 타입은 포인터와 유사하게 동작합니다. 그래서 lower나 upper를 통해 해당 위치의 값에 접근할 수 있고, 산술 연산을 통해 다른 위치로 이동할 수 있습니다.

0개의 댓글