在定义的位置初始化向量向量 - C ++

时间:2013-09-26 08:16:31

标签: c++ opencv vector

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

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.

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

您需要先调整vecvec的大小。它应该有多少“位置”?我们来说MaxLocations。然后你做

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

如果您事先不知道尺寸,可以这样做:

if(location >= vecvec.size())
{
    vecvec.resize(location+1);    
}
vecvec[location] = vecpnt;

答案 1 :(得分:0)

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

std::vector<std::vector<CV::Point> vecvec(10);