Namespaces
Variants

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

From cppreference.net
Ranges library
Range adaptors
헤더 파일에 정의됨 <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 를 취하고, 적응된 view의 값-타입에서 두 번째 요소의 값-타입 을 가진 view를 생성합니다.

1) ranges:: elements_view < R, 1 > 에 대한 별칭입니다.
2) RangeAdaptorObject (그리고 또한 RangeAdaptorClosureObject ). 표현식 views :: values ( e ) 표현식 동등 합니다 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
(클래스)