小编Bag*_*uss的帖子

标准lib函数的复杂性顺序

对不起,如果这是一个愚蠢的问题,但......

此代码的复杂度顺序为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)?

我怎么能确定任何标准函数的复杂性顺序是什么?

c++ complexity-theory

2
推荐指数
1
解决办法
1709
查看次数

这个字符串的范围是什么?

如果我有以下代码:

{
    UnicodeString sFish = L"FISH";
    char *szFish = AnsiString(sFish).c_str();

    CallFunc(szFish);
}
Run Code Online (Sandbox Code Playgroud)

那么创建的临时AnsiString的范围是什么,以及szFish指向有效数据的时间有多长?它仍然对CallFunc函数有效吗?

它的范围只是一行,还是整个块?

c++ c++builder c++builder-xe

2
推荐指数
1
解决办法
169
查看次数