0

是否可以在指定位置初始化点向量的向量?!

IE

std::vector<std::vector<CV::Point> vecvec;
std::vector<CV::Point> vecpnt;
CV::Point pnt;
pnt.x = px;
pnt.y = py;
vecpnt.push_back(pnt);

然后将vecpnt插入/推送到 vecvec的第二行。假设vecvec不为空。

我试过:

vecvec[location].push_back(vecpnt); // Say _location_ is set to two.

我没有收到错误,但我的代码在编译后立即中止。

谢谢你的帮助。

4

2 回答 2

2

您需要先调整大小vecvec。它应该有多少个“位置”?假设 MaxLocations。然后你做

vecvec.resize(MaxLocations);
vecvec[location] = vecpnt;

如果您事先不知道大小,可以执行以下操作:

if(location >= vecvec.size())
{
    vecvec.resize(location+1);    
}
vecvec[location] = vecpnt;
于 2013-09-26T08:19:36.063 回答
0

std::vector<T>初始化大小为 0,因此vecvec[2]很可能会导致您的崩溃。vecvec您可以使用特定大小进行初始化:

std::vector<std::vector<CV::Point> vecvec(10);
于 2013-09-26T08:19:51.563 回答