Stroustrup氏変換動作中のベクトル要素に機能を実行するためにオーバーロードoperator()
の使用例与える:ラムダ式とSTLアルゴリズムを組み合わせたファンクタを使用していますか?
class Example
{
public:
std::vector<int> Test1 {1,2,3,4,5};
std::vector<int> Test2;
int operator()(int el);
void MyFunction();
}
int Example::operator()(int el)
{
return el + 1;
}
void Example::MyFunction()
{
std::transform(Test1.begin(), Test1.end(), std::back_inserter(Test2), std::bind(Example(), std::placeholders::_1))
}
しかし、ラムダの導入とを
std::transform(Test1.begin(), Test1.end(), std::back_inserter(Test2), [](int el){return el + 1;});
私は、オーバーロードされたoperator()
アプローチを使用することにほとんど価値がないと言っていますか?または、STLアルゴリズムを使用するときに有益なシナリオがまだありますか?
タイトルは一般的です - 演算子のオーバーロードですが、実際は演算子()のオーバーロード、さらに正確にはファンクタの使用を意味します。私は質問を編集します。 – SergeyA
最初の例で 'std :: bind'を使っているのはなぜですか? – Deduplicator