ほぼ 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)) が私の人生に必要な理由を思い出せません。
あなたがコードを見ている間に、誰かがこれを改善したり、より効率的にしたりできますか?
ありがとう