std::string::substr 成员函数的复杂度是多少?

Fro*_*art 6 c++

std::string::substr成员函数的复杂度是多少?它是由标准定义的还是由实现定义的?

Jon*_*Jon 5

C++11 标准没有定义 的性能特征substr,无论是在 21.4.7.8 还是我能找到的其他任何地方。在实践中,您几乎可以肯定可以通过结果的长度来期望O(n)性能。n


eps*_*lon 2

na\xc3\xafve 实现的复杂度为 O(k),其中 k 是结果子字符串的长度。std::string 不支持写入时复制。如果您需要 O(1) 次子字符串操作,请使用Rope等数据结构。

\n