我是一个高中生,学习编程,我有一个问题,我不知道如何解决。
我有一个整数"x",我想要一个矩阵"mat“的大小为"x":
int mat[x][x];但这只适用于我读过x的x;
例如,如果是x == 5,则等效为
int mat[5][5];
#include <iostream>
using namespace std;
int x;
int mat[x][x];
void f(int mat2[x][x])
{
}
int main()
{
cin >> x;
int m[x][x];
f(m);
}我写了这个简短的程序来说明它在哪里工作,它不起作用。
错误:数组绑定不是
']'令牌之前的整数常数
函数void f中的全局声明和声明都有错误。它只编译没有错误的main();
我能做些什么来创建一个x大小在主函数之外的矩阵呢?
发布于 2017-03-06 14:06:59
可变长度数组不是在标准c++中扩展的。而且你不想要全局定义。
在这种情况下,您可以使用的是std::vector。
void f(std::vector<std::vector<int>>& mat)
{
}
int main()
{
cin >> x;
std::vector<std::vector<int>> m(x,std::vector<int>(x));
f(m);
}如果将该向量传递给函数或在函数中分配,大小信息将随时保留。
我能做些什么来创建一个在主函数之外大小为x的矩阵?
就像这样:
std::vector<std::vector<int>> foo() {
cin >> x;
std::vector<std::vector<int>> m(x,std::vector<int>(x));
return m;
}
int main()
{
std::vector<std::vector<int>> mat = foo();
}https://stackoverflow.com/questions/42627414
复制相似问题