Namespaces
Variants

std::abs(std::valarray)

ja.cppreference.net より
 
 
 
 
ヘッダ <valarray>
template< class T >
valarray<T> abs( const valarray<T>& va );

で定義されます。値配列の各要素の絶対値を計算します。

パラメータ

va - 操作を適用する値配列

戻り値

va 内の値の絶対値を含む値配列。

注釈

計算を実行するために、非修飾関数 (abs) が使用されます。そのような関数が利用できない場合は、std::abs が 引数依存の名前探索により使用されます。

この関数は、std::valarray とは異なる戻り値型で実装される場合があります。その場合、置換型は以下の特性を持ちます。

  • すべての const のメンバ関数が std::valarray に対して提供されます。
  • std::valarray、std::slice_array、std::gslice_array、std::mask_array および std::indirect_array は置換型から構築できます。
  • const std::valarray<T>& を取るすべての関数(begin() および end()(C++11 以降) を除く)に対して、置換型を取る同一の関数が追加されなければなりません。
  • 2つの const std::valarray<T>& 引数を取るすべての関数に対して、const std::valarray<T>& と置換型のすべての組み合わせを取る同一の関数が追加されなければなりません。
  • 戻り値型は、最も深くネストされた引数型に対して、テンプレートのネストの段数を2レベル以上増やしてはなりません。

実装例

template<class T>
valarray<T> abs(const valarray<T>& va)
{
    valarray<T> other = va;
    for (T& i : other)
        i = abs(i);
    return other; // プロキシオブジェクトが返される可能性あり
}

例

#include <iostream>
#include <valarray>
int main()
{
    std::valarray<int> v{1, -2, 3, -4, 5, -6, 7, -8};
    std::valarray<int> v2 = std::abs(v);
    for (auto n : v2)
        std::cout << n << ' ';
    std::cout << '\n';
}

出力:

1 2 3 4 5 6 7 8

関連項目

整数値の絶対値を計算する ( |x| )
(関数)
浮動小数点値の絶対値 ( |x| )
(関数)
複素数の絶対値を返す
(関数テンプレート)