19

最近、ディスカッション中に、仲間のプログラマーからコードを変更するように依頼されました。私は次のようなものを持っていました:

if( mystring.size() == 0)
    // do something
else
    // do something else 

mystring.empty()議論は、文字列が空かどうかを検証するための の使用に関するものでした。string.empty()さて、より冗長で読みやすいコードで あると主張できることに同意しますが、パフォーマンス上の利点はありますか?

私はいくつかの掘り下げを行い、私の質問に関連するこれらの2つの答えを見つけました:

両方の答えstring.empty()は、 と比較して、 の方が読みやすく、パフォーマンス上の利点がないという私の主張を裏付けていますstring.size() == 0

文字列が空かどうかを検証する ための内部ブール値フラグstringを保持する実装があるかどうか、まだ確認したいですか?

または、一部の実装が使用する他の方法があり、それは私の主張を無効にしますか??

4

2 に答える 2

35

標準ではempty()次のように定義されています。

bool empty() const noexcept;
戻り値: size() == 0。

それを行わないものを見つけるのは難しいでしょう。どちらも一定時間の操作であるため、パフォーマンスの違いはごくわずかです。合理的な実装では、両方がまったく同じアセンブリにコンパイルされると思います。

empty()はいえ、明確かつ明確です。size() == 0読みやすさのために、 (または)よりも優先する必要があり!size()ます。

于 2013-07-09T03:59:46.660 に答える