对不起,如果这是一个愚蠢的问题,但......
此代码的复杂度顺序为O(n):
char buf[] = "hello world";
size_t length = strlen(buf);
for(size_t i = 0; i < length; i++)
{
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
这段代码是O(n ^ 2):
char buf[] = "hello world";
for(size_t i = 0; i < strlen(buf); i++)
{
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
因为strlen是O(n).
但谁说strlen是O(n),它是否在标准中定义,是否必须是O(n)?
我怎么能确定任何标准函数的复杂性顺序是什么?
如果我有以下代码:
{
UnicodeString sFish = L"FISH";
char *szFish = AnsiString(sFish).c_str();
CallFunc(szFish);
}
Run Code Online (Sandbox Code Playgroud)
那么创建的临时AnsiString的范围是什么,以及szFish指向有效数据的时间有多长?它仍然对CallFunc函数有效吗?
它的范围只是一行,还是整个块?