Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;创建具有动态大小的数组_C++_Arrays_Dynamic - Fatal编程技术网

C++ C++;创建具有动态大小的数组

C++ C++;创建具有动态大小的数组,c++,arrays,dynamic,C++,Arrays,Dynamic,我如何创建一个dinamic大小的数组,如下所示: int sentLen = sentences.size(); double a[sentLen][sentLen]; for (int i = 0; i < sentLen; i++) { for (int j = 0; j < sentLen; j++) { a[i][j] = somefunction(i, j); } } 但仍然不成功。您并不真正想使用数组 std::vecto

我如何创建一个dinamic大小的数组,如下所示:

int sentLen = sentences.size();

double a[sentLen][sentLen];

for (int i = 0; i < sentLen; i++) 
{
    for (int j = 0; j < sentLen; j++)
    {
        a[i][j] = somefunction(i, j);
    }
}

但仍然不成功。

您并不真正想使用数组

std::vector<std::vector<double>> a{
   sentLen, std::vector<double>{ sentLen, 0.0 } };

for (int i = 0; i < sentLen; ++i)
{
    for (int j = 0; j < sentLen; ++j)
    {
        a[i][j] = somefunc(i, j);
    }
}
std::向量a{
sentLen,std::向量{sentLen,0.0};
对于(int i=0;i
由于无法将变量用作静态数组大小,因此出现错误。必须在编译时知道它们。您必须动态分配或使用向量。

这取决于您所说的“动态大小”。您的第一个代码块也没有问题。@Daniel我得到的
表达式在第一个代码中必须有一个常量值
。您使用的编译器和版本是什么?较旧的编译器不支持可变长度数组。如果您的编译器不支持它,则需要进行最少的研究。谢谢您的想法。似乎有语法错误,因为我让它像
std::vector a(sentLen,std::vector(sentLen,0.0))new
内存本身。使用向量的向量是过分的。@Deepsy在结束括号之间加一个空格
>
。使用
new
操作符通常是个坏主意。
{}
初始化是C++11的一个特性。你的帖子看起来像是在尝试使用它。如果使用g++或clang++,请尝试开关
-std=c++11
std::vector<std::vector<double>> a{
   sentLen, std::vector<double>{ sentLen, 0.0 } };

for (int i = 0; i < sentLen; ++i)
{
    for (int j = 0; j < sentLen; ++j)
    {
        a[i][j] = somefunc(i, j);
    }
}