错误:ISO C++禁止可变长度数组"subVec"[-Werror=vla]



我收到-Werror标志的错误,没有-Werror标志没有错误。请帮助我解决问题。

错误:错误:ISO C++禁止可变长度数组 'subVec'[-werror=vla]std::vector<float> subVec[size];

std::vector<cv::Rect> splitVector(std::vector<float> boxes)
{
int n = 4;
unsigned int size = (boxes.size() - 1) / n + 1;
std::vector<float> subVec[size];
cv::Rect rect;
std::vector<cv::Rect> Bx;
for (unsigned int k = 0; k < size; ++k)
{
auto startItr = std::next(boxes.cbegin(), (k * n));
auto endItr = std::next(boxes.cbegin(), ((k * n) + n));
subVec[k].resize(n);
if ((k * n) + n > boxes.size())
{
endItr = boxes.cend();
subVec[k].resize(boxes.size() - (k * n));
}
std::copy(startItr, endItr, subVec[k].begin());
}
for (unsigned int i = 0; i < size; ++i)
{
rect.x = subVec[i][1] * imgW;
rect.y = subVec[i][0] * imgH;
rect.width = subVec[i][3] * imgW;
rect.height = subVec[i][2] * imgH;
Bx.push_back(rect);
}

std::vector<float> subVec[size];具有可变长度的普通数组称为VLA,这不是C++特征。它只在 C 中是合法的。

最新更新