C++ に導入された multiplies 等の四則演算子2020年11月13日 13時50分02秒

C/C++ でも、長らく四則演算は「+-*/」を使ってきた。その中でC++98 から multiplies を筆頭とする関数オブジェクトクラスが導入されている。

普段の利用では、四則演算子の方が見やすいし優れているが、テンプレートや関数ポインタ等として渡すことが出来ない。そんな場面で関数オブジェクトクラスが有用になる。

#include <functional>
#include <vector>
#include <iostream>
#include <algorithm>

int main()
{   
    std::cout << "4*7 = " << std::multiplies<>()( 4, 7 ) <&
lt; std::endl;

    std::vector< int > numbers = { 1, 2, 3, 4, -2, 5, 0, -1 };

    std::for_each( numbers.begin(), numbers.end(), []( int i )
        { std::cout << i << "*3 = " << std::multiplies< int
 >()( i, 3 ) << std::endl; } );

}
4 掛ける 7 の演算は見やすいように明示的に。行列の計算で、for_each のアルゴリズムとして。例としてラムダ関数を使っているので、コンパイルは C++14 で。
% c++ -std=c++14 multiplies.cpp
% ./a.out 
4*7 = 28
1*3 = 3
2*3 = 6
3*3 = 9
4*3 = 12
-2*3 = -6
5*3 = 15
0*3 = 0
-1*3 = -3

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2020/11/13/9316128/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。