std::ranges::view_interface<D>:: data
|
||||||||||||||||||||||
| Range primitives | |||||||
|
|||||||
| Range concepts | |||||||||||||||||||
|
|||||||||||||||||||
| Range factories | |||||||||
|
|||||||||
| Range adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||
| Helper items | |||||||||||||||||
|
|
||||||||||||||||
| Member functions | ||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
data
|
||||
|
constexpr
auto
data
(
)
requires std:: contiguous_iterator < ranges:: iterator_t < D >> ; |
(1) | (C++20 이후) |
|
constexpr
auto
data
(
)
const
requires
ranges::
range
<
const
D
>
&&
|
(2) | (C++20 이후) |
data()
멤버 함수의 기본 구현은 시작 반복자가 나타내는 주소를
std::to_address
를 통해 획득하며, 이는 또한 뷰가 비어있지 않을 때 파생 타입의 뷰가 참조하는 연속 저장소(
contiguous_iterator
에 의해 암시됨)의 가장 낮은 주소입니다.
derived
를
static_cast
<
D
&
>
(
*
this
)
로 설정합니다.
return
std::
to_address
(
ranges::
begin
(
derived
)
)
;
와 동등합니다.
derived
가
static_cast
<
const
D
&
>
(
*
this
)
인 경우입니다.
목차 |
반환값
시작 반복자가 가리키는 주소.
참고 사항
다음 파생 타입들은
data()
의 기본 구현을 사용할 수 있습니다:
- std::ranges::common_view
- std::ranges::drop_view
- std::ranges::drop_while_view
- std::ranges::ref_view
- std::ranges::subrange
- std::ranges::take_view
- std::ranges::take_while_view
다음 타입들은
std::ranges::view_interface
에서 파생되었으며 자체적인
data()
멤버 함수를 선언하지 않지만, 해당 반복자 타입이
contiguous_iterator
를 만족하지 않기 때문에 기본 구현을 사용할 수 없습니다:
- std::ranges::basic_istream_view
- std::ranges::elements_view
- std::ranges::filter_view
- std::ranges::iota_view
- std::ranges::join_view
- std::ranges::lazy_split_view
- std::ranges::reverse_view
- std::ranges::split_view
- std::ranges::transform_view
예제
#include <array> #include <iostream> #include <ranges> #include <string_view> int main() { constexpr std::string_view str { "Hello, C++20!" }; std::cout << (str | std::views::drop(7)).data() << '\n'; constexpr static std::array a { 1,2,3,4,5 }; constexpr auto v { a | std::views::take(3) }; static_assert( &a[0] == v.data() ); }
출력:
C++20!
참고 항목
|
(C++17)
|
기본 배열에 대한 포인터를 얻음
(함수 템플릿) |
|
(C++20)
|
연속 범위의 시작 부분에 대한 포인터를 얻음
(커스터마이제이션 포인트 객체) |
|
(C++20)
|
읽기 전용 연속 범위의 시작 부분에 대한 포인터를 얻음
(커스터마이제이션 포인트 객체) |
|
(C++20)
|
포인터와 유사한 타입으로부터 원시 포인터를 얻음
(함수 템플릿) |