Namespaces
Variants

std:: begin (std::valarray)

From cppreference.net
template < class T >
/* 아래 참조 */ begin ( valarray < T > & v ) ;
(1) (C++11 이후)
template < class T >
/* 아래 참조 */ begin ( const valarray < T > & v ) ;
(2) (C++11 이후)

valarray 에 대한 std::begin 오버로드는 수치 배열의 첫 번째 요소를 참조하는 지정되지 않은 타입의 반복자를 반환합니다.

1) 반환 타입은 다음을 만족해야 합니다
(C++20부터)
  • 멤버 타입 value_type 을 가져야 하며, 이는 T 이어야 하고,
  • 멤버 타입 reference 을 가져야 하며, 이는 T& 이어야 합니다.
2) 반환 타입은 다음을
(C++20부터)
  • 멤버 타입 value_type 을 가져야 하며, 이는 T 이고,
  • 멤버 타입 reference 을 가져야 하며, 이는 const T& 입니다.

이 함수에서 반환된 반복자는 멤버 함수 resize() v 에 대해 호출되거나 v 의 수명이 종료될 때 무효화되며, 둘 중 먼저 발생하는 시점에 적용됩니다.

목차

매개변수

v - 숫자 배열

반환값

숫자 배열의 첫 번째 값에 대한 반복자.

예외

구현 정의 예외를 던질 수 있습니다.

참고 사항

std::valarray 인수를 받는 다른 함수들과 달리, begin() 은 valarray를 포함한 표현식에서 반환될 수 있는 대체 타입(예: 표현식 템플릿에 의해 생성된 타입)을 허용하지 않습니다: std:: begin ( v1 + v2 ) 는 이식성이 없으며, 대신 std:: begin ( std:: valarray < T > ( v1 + v2 ) ) 를 사용해야 합니다.

이 함수의 의도는 range for loops 가 valarrays와 함께 작동할 수 있도록 하는 것이며, 컨테이너 의미론을 제공하는 것이 아닙니다.

예제

#include <algorithm>
#include <iostream>
#include <valarray>
void show(const std::valarray<int>& v)
{
    std::for_each(std::begin(v), std::end(v), [](int c)
    {
        std::cout << c << ' ';
    });
    std::cout << '\n';
};
int main()
{
    const std::valarray<int> x{47, 70, 37, 52, 90, 23, 17, 33, 22, 16, 21, 4};
    const std::valarray<int> y{25, 31, 71, 56, 21, 21, 15, 34, 21, 27, 12, 6};
    show(x); 
    show(y); 
    const std::valarray<int> z{x + y};
    for (char c : z)
        std::cout << c;
}

출력:

47 70 37 52 90 23 17 33 22 16 21 4 
25 31 71 56 21 21 15 34 21 27 12 6 
Hello, C++!

결함 보고서

다음 동작 변경 결함 보고서는 이전에 게시된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 2058 C++11 1. begin() 이 대체 타입을 지원해야 함
2. 반환된 반복자가 무효화되는 시점이 명시되지 않음
1. 필수 아님
2. 명시됨

참고 항목

std::end 의 특수화
(함수 템플릿)