首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >中初始化的函数之外的特定大小的数组。

中初始化的函数之外的特定大小的数组。
EN

Stack Overflow用户
提问于 2017-03-06 13:53:59
回答 5查看 204关注 0票数 4

我是一个高中生,学习编程,我有一个问题,我不知道如何解决。

我有一个整数"x",我想要一个矩阵"mat“的大小为"x":

代码语言:javascript
运行
复制
int mat[x][x];

但这只适用于我读过xx

例如,如果是x == 5,则等效为

int mat[5][5];

代码语言:javascript
运行
复制
#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大小在主函数之外的矩阵呢?

EN

Stack Overflow用户

回答已采纳

发布于 2017-03-06 14:06:59

可变长度数组不是在标准c++中扩展的。而且你不想要全局定义。

在这种情况下,您可以使用的是std::vector

代码语言:javascript
运行
复制
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的矩阵?

就像这样:

代码语言:javascript
运行
复制
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();
}
票数 3
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42627414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档