2016-11-14 14 views
0

strlen複雑さはO(1)です。なぜなら、文字列の構造は文字列の長さを保存するためですが、mb_strlenについてはどうでしょうか?そして、なぜ私を説明してください、なぜですか?どのような複雑さmb_strlen?

+1

私が知るように、速度は使用するエンコーディングによって異なります。一般に、 'strlen'よりも多くの機能を果たします。バイト数をカウントするだけでなく、charとしてあらかじめ解析する必要があります。それは私が知ったすべてです。 –

+1

各コードポイントをカウントするために文字列を順番に処理する必要があるので、それはO(n) – Federkun

+0

* strlenの複雑さはO(1)*だと思うのは公正だと思います。 – apokryfos

答えて

1

最悪の場合、source codeを見るとO(N)です。

mbtab = encoding->mblen_table; 
n = 0; 
p = string->val; 
k = string->len; 
/* count */ 
if (p != NULL) { 
    while (n < k) { 
     m = mbtab[*p]; 
     n += m; 
     p += m; 
     len++; 
    }; 
} 
関連する問題