如何在没有循环的情况下填充 char 数组
Posted
技术标签:
【中文标题】如何在没有循环的情况下填充 char 数组【英文标题】:How to fill a char array without loop 【发布时间】: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 如果您将值写入许多不同的位置,则必须有人执行循环。你只能希望有人比你写得更好。
【参考方案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<char> canvas(n*m, 'B');
虽然代码处理的是char
,所以总是有std::string
代替:std::string canvas(n*m, 'B');
跨度>
以上是关于如何在没有循环的情况下填充 char 数组的主要内容,如果未能解决你的问题,请参考以下文章
如何在不循环的情况下将数组(Range.Value)传递给本机 .NET 类型?