C++ C++;创建具有动态大小的数组
我如何创建一个dinamic大小的数组,如下所示: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
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))基于他的第一个示例,我认为OP除了能够声明可变长度的向量外,并不需要向量的任何功能。他应该使用数组指针和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);
}
}