如何在C++中将2D数组归零?我需要两个for循环吗?
来自其他更高级的语言,我想知道为什么C++不会将数组初始化为有意义/合理的默认值?我是否总是需要声明一个数组然后将其"归零"?
C++语言试图遵循"你不为你不使用的东西付钱"的原则.它不会将基本类型初始化为任何默认值,因为您可能不希望它发生.在任何情况下,该语言都为您提供了明确请求此类初始化的机会.
在声明时,您可以使用初始化程序,只需执行此操作即可
int array[10][20] = {};
Run Code Online (Sandbox Code Playgroud)
或者,对于动态分配的数组
int (*array)[20] = new int[10][20]();
Run Code Online (Sandbox Code Playgroud)
这将给出零初始化数组.不需要循环.
但是如果你想将现有数组清零,那么你确实必须使用更复杂的东西.在整数类型的情况下,旧的memset将起作用.对于指针或浮点类型,情况通常更复杂.memset可能有效或可能无效,具体取决于实现定义的属性.在任何情况下,标准库都可以通过提供这样的循环包装来帮助您减少显式循环的数量std::fill.
| 归档时间: |
|
| 查看次数: |
2590 次 |
| 最近记录: |