Namespaces
Variants

std::ranges::views::values, std::ranges::values_view

cppreference.net에서
 
 
범위 라이브러리
범위 어댑터
 
헤더 <ranges>
template< class R >
using values_view = ranges::elements_view<R, 1>;
에 정의됨 (1) (C++20부터)
namespace views {
    inline constexpr auto values = ranges::elements<1>;
}
(2) (C++20부터)

tuple-like 값들 (예: std::tuple 또는 std::pair)의 view를 받아서, 적응된 뷰의 값 타입에서 두 번째 요소를 값 타입으로 하는 뷰를 생성합니다. 1)

에 대한 별칭입니다.2)ranges::elements_view<R, 1>RangeAdaptorObject
(그리고 RangeAdaptorClosureObject이기도 합니다). 표현식 은 적절한 부분 표현식 에 대해 views::values(e)와 표현식-동등(expression-equivalent)합니다values_view<views::all_t<decltype((e))>>{e}.e

참고 사항

values_view 는 연관 컨테이너에서 값들 을 추출하는 데 유용할 수 있습니다, 예를 들어

std::map<int, std::string> map{{1, "alpha"}, {2, "beta"}};
for (auto const& value : std::views::values(map))
    std::cout << value << ' ';
// 출력: alpha beta

예제

#include <iostream>
#include <map>
#include <ranges>
int main()
{
    const auto list = {std::pair{1, 11.1}, {2, 22.2}, {3, 33.3}};
    std::cout << "list 내 pair::second 값들: ";
    for (double value : list | std::views::values)
        std::cout << value << ' ';
    std::map<char, int> map{{'A', 1}, {'B', 2}, {'C', 3}, {'D', 4}, {'E', 5}};
    auto odd = [](int x) { return 0 != (x & 1); };
    std::cout << "\nmap 내 홀수 값들: ";
    for (int value : map | std::views::values | std::views::filter(odd))
        std::cout << value << ' ';
    std::cout << '\n';
}

출력:

list 내 pair::second 값들: 11.1 22.2 33.3
map 내 홀수 값들: 1 3 5

결함 보고서

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

DR 적용 대상 게시된 동작 올바른 동작
LWG 3563 C++20 keys_view 가 views::all_t 사용으로 인해 CTAD에 참여할 수 없음 views::all_t 제거됨

참고 항목

pair-like 값들로 구성된 view 를 취하여 각 pair의 첫 번째 요소들로 구성된 view 를 생성함
(클래스 템플릿) (range adaptor 객체)
tuple-like 값들로 구성된 view 와 숫자 N을 취하여 각 tuple의 N th 번째 요소로 구성된 view 를 생성함
(클래스 템플릿) (range adaptor 객체)
valarray의 BLAS-like slice: 시작 인덱스, 길이, stride
(클래스)