给定的两个代码有什么区别.一个在 ideone 上运行时超出时间限制,另一个工作正常



第一个代码:工作正常,0秒时间成功

int main()
{
int n=100000;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{}
cout<<"ffdfdf";
}

第二个代码:给出超出的时间限制

int main()
{
int n=100000;
bool **a=new bool*[n];
for(int i=0;i<n;i++)
{
bool[i]=new bool[n];
for(int j=0;j<n;j++)
{
bool[i][j]=1;
}
}
cout<<"ffdfdf";
}

谁能解释为什么这两个代码片段有很大的时差。我不明白。

bool[i]=new bool[n];

非常昂贵,参见其他语句。

一个好的编译器会优化你的第一个程序cout << "ffdfdf";,因为它会知道循环不做任何事情。

一旦您将错误的bool替换为as,以便实际编译第二个代码段,建议您将new[]调用与delete[]配对。

相关内容

  • 没有找到相关文章

最新更新