std::begin

std::begin (범위 시작 반복자)

주어진 범위·컨테이너·배열의 시작을 가리키는 반복자를 돌려주는 함수예요. C++11부터 있어요.

출처: cppreference

본문

다양한 컨테이너 헤더와 <iterator> 헤더에 정의돼 있어요.

// (1) C++11 (C++17부터 constexpr)
template< class C >
auto begin( C& c ) -> decltype(c.begin());

// (2) C++11 (C++17부터 constexpr)
template< class C >
auto begin( const C& c ) -> decltype(c.begin());

// (3) C++11 (C++14부터 noexcept, constexpr)
template< class T, std::size_t N >
T* begin( T (&array)[N] );

// (4) C++11, cbegin
template< class C >
constexpr auto cbegin( const C& c ) noexcept(/* ... */) -> decltype(std::begin(c));
  • 1,2) 컨테이너 cbegin()을 반환해요. C++17부터 constexpr이고, range 타입에 대한 범위 기반 for 루프 등에 쓰여요.
    1. 배열의 첫 요소를 가리키는 포인터를 돌려줘요.
  • cbeginconst 시작 반복자를 돌려줘요.

반환값

범위의 첫 요소를 가리키는 반복자·포인터예요.

예제

#include <iostream>
#include <vector>
#include <iterator>

int main()
{
    std::vector<int> v = {3, 1, 4};
    auto it = std::begin(v);
    int a[3] = {1, 2, 3};
    int* p = std::begin(a); // 배열이면 포인터
    std::cout << *it << ' ' << *p << '\n'; // "3 1"
}

더 알아보기 (Learn more)

cppreference