elements_view
클래스(C++ 표준 라이브러리)
범위의 각 튜플과 유사한 값에서 선택한 인덱스에서 요소에 대한 뷰입니다. 예를 들어 범위 std::tuple<string, int>
가 지정되면 각 튜플의 요소로 구성된 뷰를 string
만듭니다.
구문
template<input_range V, size_t N>
class elements_view : public view_interface<elements_view<V, N>>;
템플릿 매개 변수
N
뷰에 대해 선택할 요소의 인덱스입니다.
V
기본 범위의 형식입니다. 이 형식은 충족 ranges::input_range
해야 합니다.
특성 보기
다음 항목에 대한 설명은 클래스 특성 보기를 참조 하세요.
특성 | 설명 |
---|---|
범위 어댑터 | views::elements |
기본 범위 | 만족 input_range 하거나 그 이상이어야 합니다. |
요소 형식 | 인덱싱된 튜플 요소의 형식과 동일합니다. |
반복기 범주 보기 | forward_range , bidirectional_range 또는 random_access_range |
크기 | 기본 범위가 충족되는 경우에만 sized_range |
반복 const 가능 |
기본 범위가 충족되는 경우에만 const-iterable |
공통 범위 | 기본 범위가 충족되는 경우에만 common_range |
빌린 범위 | 기본 범위가 충족되는 경우에만 borrowed_range |
멤버
멤버 함수 | 설명 |
---|---|
생성자C++20 | 를 생성합니다 elements_view . |
base C++20 |
기본 범위를 가져옵니다. |
begin C++20 |
첫 번째 요소에 대한 반복기를 가져옵니다. |
end C++20 |
보기의 끝에 있는 sentinel을 가져옵니다. |
size C++20 |
이 보기의 요소 수를 가져옵니다. 기본 범위는 충족 sized_range 해야 합니다. |
에서 상속됨 view_interface |
설명 |
back C++20 |
마지막 요소를 가져옵니다. |
empty C++20 |
비어 있는지 테스트 elements_view 합니다. |
front C++20 |
첫 번째 요소를 가져옵니다. |
operator[] C++20 |
지정된 위치에 있는 요소를 가져옵니다. |
operator bool C++20 |
비어 있지 않은지 테스트 elements_view 합니다. |
요구 사항
헤더: <ranges>
(C++20 이후)
네임스페이스: std::ranges
컴파일러 옵션: /std:c++20
이상이 필요합니다.
설명
사용할 elements_view
수 있는 튜플과 유사한 형식은 std::tuple
, std::pair
및 std::array
.
생성자
의 인스턴스를 생성합니다 elements_view
.
1) constexpr elements_view(V base);
2) elements_view() requires std::default_initializable<V> = default;
매개 변수
base
기본 범위입니다.
템플릿 매개 변수 형식에 대한 자세한 내용은 템플릿 매개 변수를 참조 하세요.
반환 값
elements_view
인스턴스입니다.
설명
범위를 만드는 elements_view
가장 좋은 방법은 범위 어댑터를 사용하는 elements
것입니다. 범위 어댑터는 뷰 클래스를 만드는 데 사용되는 방법입니다. 사용자 고유의 사용자 지정 보기 형식을 만들려는 경우 보기 형식이 노출됩니다.
1) 지정된 뷰에서 만듭니 elements_view
다.
2) 기본 구문 .elements_view
예: elements_view
// requires /std:c++20 or later
#include <array>
#include <iostream>
#include <map>
#include <ranges>
#include <vector>
#include <string>
#include <utility>
int main()
{
// ========== work with a std::map
std::map<std::string, int> cpp_standards
{
{"C++98", 1988},
{"C++03", 2003},
{"C++11", 2011},
{"C++14", 2014},
{"C++17", 2017},
{"C++20", 2020}
};
// create an elements_view of all the string elements (<1>) from each tuple
for (int const year : std::views::elements<1>(cpp_standards))
{
std::cout << year << ' '; // 2003 2011 2014 2017 1988 2020
}
std::cout << '\n';
// Another way to call the range adaptor using pipe (|) syntax
for (auto&& name : cpp_standards | std::views::elements<0>)
{
std::cout << name << ' '; // C++03 C++11 C++14 C++17 C++98 C++20
}
std::cout << '\n';
// ========== working with arrays
std::array<std::array<int, 4>, 3> arr = { {{0,1,2,3}, {4,5,6,7}, {8,9,10,11}} };
for (int& fourth : arr | std::views::elements<3>)
{
std::cout << fourth << ' '; // 3 7 11
}
std::cout << '\n';
// ========== work with a std::pair
std::vector<std::pair<std::string, int>> windows
{
{"Windows 1.0", 1985},
{"Windows 2.0", 1987},
{"Windows 3.0", 1990},
{"Windows 3.1", 1992},
{"Windows NT 3.1", 1993},
{"Windows 95", 1995},
{"Windows NT 4.0", 1996},
{"Windows 98", 1998},
{"Windows 2000", 2000}
};
for (int year : std::views::elements<1>(windows))
{
std::cout << year << ' '; // 1985 1987 1990 1992 1993 1995 1996 1998 2000
}
}
2003 2011 2014 2017 1988 2020
C++03 C++11 C++14 C++17 C++98 c++20
3 7 11
1985 1987 1990 1992 1993 1995 1996 1998 2000
base
기본 범위의 복사본을 가져옵니다.
// Uses a copy constructor to return the underlying range
constexpr V base() const& requires std::copy_constructible<V>;
// Uses a move constructor to return the underlying range
constexpr V base() &&;
매개 변수
없음.
반환 값
기본 범위입니다.
begin
에서 첫 번째 요소에 대한 반복기를 가져옵니다 elements_view
.
1) constexpr auto begin() requires (!Simple_view<V>);
2) constexpr auto begin() const requires range<const V>;
매개 변수
없음.
반환 값
의 첫 번째 요소를 elements_view
가리키는 반복기입니다.
end
의 끝에 있는 sentinel을 가져옵니다. elements_view
1) constexpr auto end() requires (!Simple_view<V> && !ranges::common_range<V>);
2) constexpr auto end() requires (!Simple_view<V> && ranges::common_range<V>);
3) constexpr auto end() const requires ranges::range<const V>;
4) constexpr auto end() const requires ranges::common_range<const V>;
매개 변수
없음.
반환 값
다음의 마지막 요소 뒤에 있는 sentinel입니다 elements_view
.
size
보기의 요소 수를 가져옵니다.
constexpr auto size() requires sized_range<V>;
constexpr auto size() const requires sized_range<const V>;
매개 변수
없음.
반환 값
elements_view
의 요소 수입니다.
설명
보기의 크기는 기본 범위 sized_range
가 경계인 경우에만 사용할 수 있습니다.