0
strlen
複雑さはO(1)です。なぜなら、文字列の構造は文字列の長さを保存するためですが、mb_strlen
についてはどうでしょうか?そして、なぜ私を説明してください、なぜですか?どのような複雑さmb_strlen?
strlen
複雑さはO(1)です。なぜなら、文字列の構造は文字列の長さを保存するためですが、mb_strlen
についてはどうでしょうか?そして、なぜ私を説明してください、なぜですか?どのような複雑さmb_strlen?
最悪の場合、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++;
};
}
私が知るように、速度は使用するエンコーディングによって異なります。一般に、 'strlen'よりも多くの機能を果たします。バイト数をカウントするだけでなく、charとしてあらかじめ解析する必要があります。それは私が知ったすべてです。 –
各コードポイントをカウントするために文字列を順番に処理する必要があるので、それはO(n) – Federkun
* strlenの複雑さはO(1)*だと思うのは公正だと思います。 – apokryfos