0

ほぼ 2 年前に書いたプログラムを更新していて、文字列からすべての句読点とスペースを削除する呼び出しに出くわしました。

呼び出しは問題なく機能しますが、これが最も効率的な方法かどうかはわかりません。

コード行は次のとおりです。

tempMessage.erase(remove_if(tempMessage.begin(), tempMessage.end(), (int(*)(int))ispunct), tempMessage.end());

どこでこれを思いついたのか、どのようにまとめたのか覚えていませんが、この呼び出しを完全に理解できるようになりたい.

std::string.erase が最初の引数を2番目の引数まで取り除くことがわかりました。remove_if が開始点と終了点を定義する方法もわかりますが、remove_if 呼び出しの 3 番目の引数がどこから来ているか教えてもらえますか?

(int(*)(int)) が私の人生に必要な理由を思い出せません。

あなたがコードを見ている間に、誰かがこれを改善したり、より効率的にしたりできますか?

ありがとう

4

1 に答える 1