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用as 替换你的错误s,所以第二个片段实际编译,你会被建议配对你的new[]电话delete[].
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |