std::size / std::ssize

std::size / std::ssize (범위 크기)

범위의 요소 수를 돌려주는 함수예요. C++17부터 size, C++20부터 ssize가 있어요.

출처: cppreference

본문

다양한 컨테이너 헤더와 <iterator> 헤더에 정의돼 있어요.

// (1) C++17, size
template< class C >
constexpr auto size( const C& c ) noexcept(noexcept(c.size()))
    -> decltype(c.size());

// (2) C++20, ssize
template< class C >
constexpr auto ssize( const C& c ) noexcept(noexcept(c.size()))
    -> std::common_type_t<std::ptrdiff_t,
                          std::make_signed_t<decltype(c.size())>>;

// (3) C++17, 배열용 size
template< class T, std::size_t N >
constexpr std::size_t size( const T (&array)[N] ) noexcept;

// (4) C++20, 배열용 ssize
template< class T, std::ptrdiff_t N >
constexpr std::ptrdiff_t ssize( const T (&array)[N] ) noexcept;
    1. 컨테이너 csize()를 반환해요.
    1. c.size()를 부호 있는 타입으로 변환해 반환해요.
    1. 배열의 요소 수를 반환해요.
    1. 배열의 요소 수를 std::ptrdiff_t로 반환해요.

반환값

범위의 요소 수예요.

예제

#include <iostream>
#include <vector>
#include <iterator>

int main()
{
    std::vector<int> v = {3, 1, 4};
    int a[3] = {1, 2, 3};
    std::cout << std::size(v) << ' ' << std::size(a) << '\n';      // "3 3"
    std::cout << std::ssize(v) << '\n';                            // "3"
}

더 알아보기 (Learn more)

cppreference