grep

sequence container を引数に取る関数を定義してしまったのでじゃあこれもという感じで。

std::liststd::deque 用の汎用版はともかく std::vector 用の部分特殊化版は predicate を考慮しながら 2 回配列をまわしてるのでアレかもしんない。ただまぁ object の再配置とそれに伴う memory allocation はかなり重い処理なはずで ( しかも 1 回で済む保証がない ) それを選ぶよりは compiler によって inline 展開されて performance が下がらない可能性のある predicate の呼ばれる回数を増やす方を選んだほうがマシだろうという姿勢。