我正在尝试用C++做任务。我需要创建这个函数:
void fillArray(std::array<std::array<int, maxColumns>, maxRows> array, size_t rows, size_t columns) {
}
现在我的示例代码如下所示:
#include <iostream>
#include <array>
constexpr int maxColumns = 42;
constexpr int maxRows = 334;
void fillArray(std::array<std::array<int, maxColumns>, maxRows> array, size_t rows, size_t columns) {
}
int main()
{
}
我需要用从1到行*列的数字填充数组,从[0][0]和对角线开始。如何在本例中声明并初始化带有数组的函数,然后对角填充?如有任何帮助,我们将不胜感激!
如何在本例中对角填充数组?
假设tou想用某个值填充对角线,比方说5,数组的其余部分用0,你可以这样做:
template <std::size_t maxColumns, std::size_t maxRows>
void fillArray(std::array<std::array<int, maxColumns>, maxRows>& a) {
for(int i = 0; i < maxRows; i++){
for (int j = 0; j < maxColumns; j++){
if(i == j){
a[i][j] = 5;
}
else{
a[i][j] = 0;
}
}
}
}
int main()
{
std::array<std::array<int, 10>, 10> a;
fillArray(a);
for(auto& i : a){ // test print
for(auto j : i){
std:: cout << j << " ";
}
std::cout << "\n";
}
}
输出:
5 0 0 0 0 0 0 0 0 0
0 5 0 0 0 0 0 0 0 0
0 0 5 0 0 0 0 0 0 0
0 0 0 5 0 0 0 0 0 0
0 0 0 0 5 0 0 0 0 0
0 0 0 0 0 5 0 0 0 0
0 0 0 0 0 0 5 0 0 0
0 0 0 0 0 0 0 5 0 0
0 0 0 0 0 0 0 0 5 0
0 0 0 0 0 0 0 0 0 5
您可以用您原来的函数来做,但是按照Jarod的建议使用模板更实用。
应该是
template <std::size_t maxColumns, std::size_t maxRows>
void fillArray(std::array<std::array<int, maxColumns>, maxRows>& array) {
// ...
}
演示
我对Javafx不熟悉,想知道如何从2维字符串数组填充桌面视图: 会非常感激你的回应。
到目前为止,这就是我得到的,但我不太确定接下来该怎么办。我(认为)这里发生的是,它到达数组的第一个位置,在0,0处,并生成一个数字。然后转到1,1和2,2,依此类推。我不确定该从那里开始,我相信有一种更有效的方法可以一次填充整行或整列。 此外,我的编译器不允许我像平时一样使用cout或endl?它坚持我使用std::cout,我只是想知道为什么。
问题内容: 嗨,我正在尝试根据用户输入自动填充2d数组。用户将输入1个数字,该数字将设置2d数组的大小。然后,我想打印出数组的数字。例如,如果用户输入数字4。2d数组将是4行乘4列,并且应包含数字1到16,并打印如下。 但是,我正在努力思考正确的声明来做到这一点。目前,我的代码只是打印出包含*的2d数组。 有谁知道我如何打印数字的任何想法,我真的被卡住了。我的代码如下: 问题答案: 读取n值,
您知道如何用流中的单词填充数组吗?这是我目前所能做到的: 所以它看起来像{{1,2,3},{4,5,6},{7,8,9},…}
问题内容: 我是Java 8的新手,目前无法完全掌握Streams,是否可以使用Stream功能操作填充数组?这是我如何使用标准的for循环来实现的示例代码: 如果有可能,我将如何使用Stream?如果可能,是否方便(性能和可读性明智)? 问题答案: 在这里,您有一个解决方案,它生成数组而不是修改先前定义的变量: 如果要使用并行流,那么避免诸如修改变量(数组或对象)之类的副作用非常重要。这可能会导
你有时能看到用另一种不同的接口(不同参数和返回值)实现addTime这样的函数。addTime函数不是在每次调用时都创建一个新对象,而是要求调用者提供一个“空对象”用以存储其结果。请将下述代码和之前版本做比较: void addTimeFill (const Time& t1, const Time& t2, Time& sum) { sum.hour = t1.hour + t2.hou