• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    function template
    <iterator>

    std::ssize

    namespace std {
      template <class C>
      constexpr auto ssize(const C& c)
        -> common_type_t<ptrdiff_t, make_signed_t<decltype(c.size())>>; // (1)
    
      template <class T, ptrdiff_t N>
      constexpr ptrdiff_t ssize(const T (&array)[N]) noexcept;          // (2)
    }
    

    概要

    コンテナの要素数を、符号付き整数型で取得する。

    • (1) : コンテナの要素数を取得する
    • (2) : 生配列の要素数を取得する

    この関数の戻り値は、標準コンテナも含めて基本的にはstd::ptrdiff_t型が返る。ただし、自作コンテナのsize()メンバ関数がstd::size_tと異なる幅の型を返す場合は、それに対応する符号付き整数型が返る。

    戻り値

    • (1) : return c.size();
    • (2) : return N;

    #include <cassert>
    #include <vector>
    #include <iterator>
    
    int main()
    {
      std::vector<int> v = {1, 2, 3};
      int ar[] = {1, 2, 3};
    
      // コンテナの要素数を取得。
      std::ptrdiff_t n1 = std::ssize(v);
      assert(n1 == 3);
    
      // 生配列の要素数を取得
      std::ptrdiff_t n2 = std::ssize(ar);
      assert(n2 == 3);
    }
    

    出力

    バージョン

    言語

    • C++20

    処理系

    関連項目

    参照