1. ホーム
  2. c++

[解決済み] C++の文字列のlength()とsize()はどちらが速いか?

2022-03-03 15:41:39

質問

length() は文字列の文字数を返し size() が返されます。 size_t も同じですが、他のSTLコンテナとの一貫性を持たせるために使用されます。

計算用 length() の場合、文字列はすべての文字を繰り返し、その長さを数えます。だから O(n) の時間です。

size() も同じですか?

または、変数のサイズは、直接 O(1) 時間?

そこで質問なのですが、速度の点では同じなのか(計算方法として)、サイズの計算は O(1) 時間 ?

どのように解決するのですか?

どちらも「一定」という複雑さは同じです。

N4431 作業部会草案 21.4.4 節より

size_type size() const noexcept;

戻り値:現在文字列中にあるchar型オブジェクトの数 複雑さ:一定の時間。

そして

size_type length() const noexcept;

戻り値:size()。


[...] はすべての文字を繰り返し、長さ [...] を数えます。

それは、あなたが考えているCストリングスです。