C++ に導入された multiplies 等の四則演算子 ― 2020年11月13日 13時50分02秒
普段の利用では、四則演算子の方が見やすいし優れているが、テンプレートや関数ポインタ等として渡すことが出来ない。そんな場面で関数オブジェクトクラスが有用になる。
4 掛ける 7 の演算は見やすいように明示的に。行列の計算で、for_each のアルゴリズムとして。例としてラムダ関数を使っているので、コンパイルは C++14 で。
#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; } );
}
% 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
最近のコメント