• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    function
    <cstdlib>

    std::div

    namespace std {
      div_t
        div(int numer,
            int denom);         // (1) C++03
      constexpr div_t
        div(int numer,
            int denom);         // (1) C++23
    
      ldiv_t
        div(long numer,
            long denom);        // (2) C++03
      constexpr ldiv_t
        div(long numer,
            long denom);        // (2) C++23
    
      lldiv_t
        div(long long numer,
            long long denom);   // (3) C++03
      constexpr lldiv_t
        div(long long numer,
            long long denom);   // (3) C++23
    
      ldiv_t
        ldiv(long numer,
             long denom);       // (4) C++03
      constexpr ldiv_t
        ldiv(long numer,
             long denom);       // (4) C++23
    
      lldiv_t
        lldiv(long long numer,
              long long denom); // (5) C++11
      constexpr lldiv_t
        lldiv(long long numer,
              long long denom); // (5) C++23
    }
    

    概要

    numer / denomnumer % denomの計算をひとつの操作で行う。

    • (1) : int型のオーバーロード
    • (2) : long型のオーバーロード
    • (3) : long long型のオーバーロード
    • (4) : long型規定
    • (5) : long long型規定

    戻り値

    戻り値型となるクラスのquotに商、remに剰余を代入して返す。

    結果のどちらかが表現できない場合は未定義動作を引き起こす。

    #include <iostream>
    #include <cstdlib>
    
    int main()
    {
      std::div_t x = std::div(5, 2);
      std::cout << x.quot << std::endl;
      std::cout << x.rem << std::endl;
    }
    

    出力

    2
    1
    

    備考

    特定の環境では、早期に constexpr 対応されている場合がある:

    • GCC 4.6.1 以上

    参照