ここでは非対称性は見られません。実際にはまったく逆で、完全に対称的であるように見えます。ある開始位置から右find_first_of
への検索と考えてください。一方、ある開始位置から左への検索と考えてください。find_last_of
名前には誤解を招くような性質があります。最初の出現ではなく最後の出現を返すことを除いてfind_last_of
、自然な前方検索を意味します。ただし、双方向シーケンスでは、名前の「前方」の性質を無視して、後方検索と考えることができます。後方検索も最初の出現を返し、開始点から左に進むだけです。この観点から、関数は。と対称find_first_of
です。
編集:あなたのコメントを読んだ後、私はついにあなたのポイントを理解しました。したがって、問題は、pos
パラメータの現在のセマンティクスにより、の空の検索領域を指定できないことですfind_last_of
。はい、それは理にかなっています。find_last_of
私は同意します、それは確かにデザインの矛盾として見ることができるものです。
find_last_of
一貫性を保つために、私は実際には価値に関して包括的ではないと予想しpos
ます。その場合、xpos
によって返される目標位置の指定は次のfind_last_of
ようになります。
xpos<posおよびxpos<size();
その場合s.find_last_of(c, 0)
、空のプレフィックスをs.find_last_of(c, s.size())
検索し、文字列全体を検索します。
しかし、標準は言う
xpos <=posおよびxpos<size();
なぜ彼らがpos
パラメータにそのような包括的な意味を与えることにしたのか私は本当に知りません。おそらく彼らはそれが理解しやすくなるだろうと思ったのでしょう。