C++編で扱っている C++ は 2003年に登場した C++03
という、とても古いバージョンのものです。C++ はその後、C++11 -> C++14
-> C++17 -> C++20 -> C++23 と更新されています。
なかでも C++11 での更新は非常に大きなものであり、これから C++
の学習を始めるのなら、C++11
よりも古いバージョンを対象にするべきではありません。特に事情がないなら、新しい
C++ を学んでください。 当サイトでは、C++14 をベースにした新C++編を作成中です。
問題① find、find_if、search、find_end、find_first_of の各関数について、その関係性を整理してください。
本質的に言えば、find系の関数は、範囲内から条件に合う単一の要素を探しますが、search系の関数は、範囲内から条件に合う範囲(部分)を探すということになります。
紛らわしいのが find_end関数で、これは名前とは裏腹に search関数に対応する関数であることです。search関数が条件に合う最初の範囲を返すのに対して、find_end関数は最後の範囲を返す違いがあります。
find/find_if は、それぞれ値を渡すか、関数や関数オブジェクトを渡すのかの違いです。STLアルゴリズム全般に言えることですが、名前の末尾に「_if」が付くものと付かないものがある場合は、同様の観点で分けられています。しかし、「_if」が付かないものしかなく、オーバーロードによって分けられている関数も多数あり、この辺りは一貫性がありません。
新規作成。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |