非標準::copy_if
Problem
コンテナから条件を満たす要素のみをコピーしたい場合は、どのようにすれば良いでしょうか?
Solution
非標準ながら広く知られたcopy_if()アルゴリズムを使用しましょう。
copy_if()に関しては、Bjarne Stroustrup氏がプログラミング言語C++第3版の中で
それでは、あなたのライブラリにcopy_if()を加えてください。
Notes
1. プログラミング言語C++第3版
コンテナから条件を満たす要素のみをコピーしたい場合は、どのようにすれば良いでしょうか?
Solution
非標準ながら広く知られたcopy_if()アルゴリズムを使用しましょう。
copy_if()に関しては、Bjarne Stroustrup氏がプログラミング言語C++第3版の中で
残念なことに、copy_if()は、どうしたわけか標準ライブラリが提供するアルゴリズムセットから抜け落ちてしまった(私の過失である)。と書かれています。
それでは、あなたのライブラリにcopy_if()を加えてください。
template<class InputIterator, class OutputIterator, class Predicate>
inline OutputIterator copy_if(InputIterator first, InputIterator last, OutputIterator result, Predicate predicate)
{
while (first != last) {
if (predicate(*first)) {
*result++ = *first;
}
++first;
}
return result;
}
Notes
1. プログラミング言語C++第3版
![]() | プログラミング言語C++第3版 Bjarne Stroustrup (1998/12) アジソンウェスレイパブリッシャーズジャパン この商品の詳細を見る |

