HKe*_*dia -13 c++ memory loops timeout
第一个代码:工作正常,成功时间为0秒
int main()
{
int n=100000;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{}
cout<<"ffdfdf";
}
Run Code Online (Sandbox Code Playgroud)
第二个代码:超出时间限制
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";
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么这两个代码片段有很大的时间差异.我不理解它.
bool[i]=new bool[n];
是非常昂贵的cf. 其他陈述.
一个好的编译器会优化你的第一个程序cout << "ffdfdf";
,因为它会知道循环没有做任何事情.
一旦你bool
用a
s 替换你的错误s,所以第二个片段实际编译,你会被建议配对你的new[]
电话delete[]
.
归档时间: |
|
查看次数: |
81 次 |
最近记录: |