最近我读了很多关于排序算法的文章,我发现了让我感到困惑的奇怪之处.在函数中,它需要在for循环中创建一个临时数组.示例代码是
for(;;)//ignore the condition
{
int *b = new int[N];
//some code
delete b[];
}
Run Code Online (Sandbox Code Playgroud)
问题是:为什么不在没有new运算符的情况下直接创建它,因为编译器会自动销毁它并在每次迭代后释放内存.就像在循环中写这个
int b[N];
Run Code Online (Sandbox Code Playgroud)
在前面,我总是使用这个方法来创建临时类型/对象.我完全错了或类似数组的内容与内置类型不同?
那么,Stack Overflowers,有人能给我一些建议吗?
为什么不在没有new运算符的情况下直接创建它,因为编译器会自动销毁它并在每次迭代后释放内存.
的确,为什么不呢?
如果N在编译时已知,那么继续使用int b[N].
如果N在编译时不知道,那么std::vector<int>应该使用:
for(;;)//ignore the condition
{
std::vector<int> b(N);
//some code
}
Run Code Online (Sandbox Code Playgroud)
你应该问的代码的作者为什么他或她使用new[]和delete[],但机会是它只是缺乏经验.
| 归档时间: |
|
| 查看次数: |
118 次 |
| 最近记录: |