【问题标题】:How to fill a char array without loop如何在没有循环的情况下填充 char 数组
【发布时间】:2021-02-17 21:37:43
【问题描述】:

在不使用循环的情况下,我需要在 c++ 中用字母填充 char 数组的帮助。这是我目前所拥有的。

int n, m;
    cin >> n >> m;
    char canvas[n][m] = {{'B'}};

但是这行不通。有谁知道我该怎么做?

【问题讨论】:

  • 提示:std::vector.
  • @scohe001 循环不会需要很长时间吗?
  • 您正在尝试创建一个 VLA,它不包含在 C++ 标准中(但在某些实现中作为扩展提供)
  • 提示 2:像 char canvas[n][m] 这样的 VLA 是 not part of the C++ standard 并且有炸毁堆栈的趋势。 std::vector 将解决您的两个问题。
  • @Shadow_Walker 如果您将值写入许多不同的位置,则必须有人执行循环。你只能希望有人比你写得更好。

标签: c++ arrays string char


【解决方案1】:

您可以使用 2D std::vector 轻松完成此操作:

int n, m;
std::cin >> n >> m;
std::vector<std::vector<char>> canvas(n, std::vector<char>(m, 'B'));

【讨论】:

  • 在我们正在进行的“为什么你应该使用std::vector”系列中输入#9,582,108
  • 一维平面向量甚至比二维稀疏向量更好:std::vector&lt;char&gt; canvas(n*m, 'B'); 虽然代码处理的是char,所以总是有std::string 代替:std::string canvas(n*m, 'B');跨度>
猜你喜欢
  • 1970-01-01
  • 2015-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-30
  • 1970-01-01
  • 2014-02-19
相关资源
最近更新 更多