【问题标题】:how to initialize muti-dimension C++ std arrays including zero initialization?如何初始化多维 C++ 标准数组,包括零初始化?
【发布时间】:2021-12-26 19:45:05
【问题描述】:

我有一个二维标准数组,例如, 数组, 9> tbl;

如何用-1等相同的值初始化它? 如果我只是希望它被零初始化,那么最好的方法是什么?

【问题讨论】:

  • 什么是最好的方法 -- 没有“最好的方法”。可能有好的方法,坏的方法,或者取决于使用。通过使用“最佳方式”来表达您的问题,问题现在变得基于意见。
  • 谢谢。基于意见是可以的,因为它可能适用于不同的用例。

标签: c++ multidimensional-array initialization std zero-initialization


【解决方案1】:

正如@PaulMcKenzie 所说,没有一种最好的方法来做某事。

对于整个数组的零初始化,大概可以使用聚合初始化的方法。

std::array<std::array<int, N>, N> arr{0};

此方法仅适用于数组的零初始化。

但是,如果您想始终使用自定义数字初始化数组,则需要遍历所有元素并手动分配它们。

std::array<std::array<int, N>, N> arr;

for(auto& row : arr)
  for(auto& i : row)
    i = -1;

【讨论】:

  • 谢谢。我正在考虑的另一个潜在解决方案是 memset 数组的行数据。
  • memset 是 C 的概念。如果您尝试在 C++ 中执行此操作,请使用 STL 中的函数,例如 std::fill 出现在 &lt;algorithm&gt; 标头中,或者您可以尝试使用std::valarray 如果您在元素上应用许多数值计算。
猜你喜欢
  • 2011-04-03
  • 2015-02-26
  • 1970-01-01
  • 2015-08-01
  • 1970-01-01
  • 2019-02-09
相关资源
最近更新 更多