C++/레퍼런스(Reference)

C++ 레퍼런스: std::begin, std::end, std::cbegin, std::cend

kim선달 2020. 10. 29. 00:23
Select Language

C++ 레퍼런스

std::begin, std::end
std::cbegin, std::cend


요약

기본 배열 타입은 자동으로 알맞은 iterator를 만들어 되돌려 줍니다.

그 외에는 인자로 받은 객체의 동일한 이름의 메서드를 호출합니다.

즉, 알맞은 메서드가 정의되어 있다면 사용자 정의 클래스도 인자로 넘겨 줄 수 있습니다.

 


설명

std::begin 은 처음 원소의 주소를, std::end 는 마지막 원소의 다음 주소를 가리키는 iterator를 만들어 반환합니다.

 

std::cbeginstd::cend 는 각각 std::beginstd::end 의 동일한 주소를 가리키는 const_iterator를 반환합니다.

 

std::begin 이상, std::end 미만 범위 이외의 값을 읽거나 쓰는건 정의되지 않은 행동(undefined behaviour) 입니다.

 

 


예시 코드:

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

int main() 
{
  std::vector<int> v = { 3, 1, 4 };
  std::cout << *std::begin(v) << " " << *v.begin() << std::endl;
  std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
}

 

출력:

3 3
3 1 4