Namespaces
Variants

std::ranges:: ssize

From cppreference.net
Ranges library
Range adaptors
헤더에 정의됨 <ranges>
헤더에 정의됨 <iterator>
inline namespace /* unspecified */ {

inline constexpr /* unspecified */ ssize = /* unspecified */ ;

}
(C++20부터)
(커스터마이제이션 포인트 객체)
호출 시그니처
template < class T >

requires /* see below */

constexpr auto ssize ( T && t ) ;
(C++20부터)

t 내 요소의 개수를 상수 시간에 계산하고, 결과를 부호 있는 타입으로 변환합니다.

주어진 부분식 에서 t 가 ( 구체화된 가능성이 있는) 결과 객체를 나타내고 E 로 표기할 때:

목차

커스터마이제이션 포인트 객체

이름 ranges::ssize 사용자 지정 지점 객체 를 나타내며, 이는 함수 객체 의 const 리터럴 semiregular 클래스 타입입니다. 자세한 내용은 CustomizationPointObject 를 참조하십시오.

참고 사항

만약 ranges :: ssize ( e ) 가 표현식 e 에 대해 유효하다면, 반환 타입은 부호 있는 정수형 타입(signed-integer-like type) 입니다.

예제

#include <array>
#include <iostream>
#include <ranges>
#include <type_traits>
int main()
{
    std::array arr{1, 2, 3, 4, 5};
    auto s = std::ranges::ssize(arr);
    std::cout << "ranges::ssize(arr) = " << s << '\n'
              << "ranges::ssize is "
              << (std::is_signed_v<decltype(s)> ? "signed" : "unsigned")
              << '\n';
    std::cout << "reversed arr: ";
    for (--s; s >= 0; --s)
        std::cout << arr[s] << ' ';
    std::cout << "\n" "s = " << s << '\n';
}

출력:

ranges::ssize(arr) = 5
ranges::ssize is signed
reversed arr: 5 4 3 2 1
s = -1

결함 보고서

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

DR 적용 대상 게시된 동작 수정된 동작
LWG 3403 C++20 ranges::size 는 일부 비-범위 타입에 대해 동작했지만 ranges::ssize 는 동작하지 않음 동작하도록 수정됨

참고 항목

범위의 크기와 같은 정수를 반환합니다
(커스터마이제이션 포인트 객체)
범위가 상수 시간에 자신의 크기를 알 수 있음을 명시합니다
(컨셉)
반복자와 센티넬 사이의 거리, 또는 범위의 시작과 끝 사이의 거리를 반환합니다
(알고리즘 함수 객체)
(C++17) (C++20)
컨테이너나 배열의 크기를 반환합니다
(함수 템플릿)