我有一个大小为b
和int matrix [a] [b]
的矩阵。
{{1}}
我如何填写任何价值?
感谢您回答我的问题。
答案 0 :(得分:2)
您标记了C ++ 14,因此您可以使用加倍的远程循环
for ( auto & v : matrix )
for ( auto & e : v )
e = 42;
在我看来,这是一种简单而优雅的方式来初始化matrix
。
为了好玩,我向您展示了使用标准算法的方法
std::for_each(std::begin(matrix), std::end(matrix),
[](auto & v){ std::fill(std::begin(v), std::end(v), 42); });
其他方式也是可能的(例如,参见Vlad的答案中仅std::fill()
解决方案),但我发现嵌套的双重更优雅,更易于理解。
请记住,如果你必须初始化为零,你可以简单地写
int matrix [4][2] { };
答案 1 :(得分:0)
嵌套循环以填充或读取多维矩阵:
int matrix [a] [b];
for(int i(0); i != a; ++i)
for(int j(0); j != b; ++j)
matrix[i][j] = i * j;
或者用来自用户的输入填充它:
for(int i(0); i != a; ++i)
for(int j(0); j != b; ++j){
std::cout << "matrix[" << i << "][" << j <<
"]: ";
std::cin >> matrix[i][j];
}
要打印它:
for(int i(0); i != a; ++i){
for(int j(0); j != b; ++j)
std::cout << matrix[i][j] << ", ";
std::cout << std::endl;
}
答案 2 :(得分:0)
最简单的方法是将二维数组解释为一维数组并应用标准算法std::fill
。
例如
#include <iostream>
#include <algorithm>
int main()
{
const size_t M = 5;
const size_t N = 10;
int a[M][N];
std::cout << "Enter the initializer value: ";
int value;
std::cin >> value;
std::fill( *a, *a + M * N, value );
for ( const auto &row : a )
{
for ( int x : row ) std::cout << x << ' ';
std::cout << std::endl;
}
return 0;
}
程序输出可能看起来像
Enter the initializer value: 10
10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10