人喜一个简单的问题:清除向量空间
我设置了向量到一定规模后,我想要做的是空的是矢量,一旦它击中的最大空间。
我有这样的代码如下:
vector<Point> Rightarm(20);
vector<Point> Leftarm(20);
vector<Point>::const_iterator RightIter;
vector<Point>::const_iterator LeftIter;
Rightarm.push_back(center);
Leftarm.push_back(center1);
for(RightIter = Rightarm.begin(); RightIter != Rightarm.end(); ++RightIter)
{
circle(drawing, *RightIter, 3, Scalar(0,255,0), CV_FILLED);
}
if(RightIter == Rightarm.end())
{
Rightarm.clear();
}
for(LeftIter = Leftarm.begin(); LeftIter != Leftarm.end(); ++LeftIter)
{
circle(drawing, *LeftIter, 3, Scalar(0,255,0), CV_FILLED);
}
if(LeftIter == Leftarm.end())
{
Leftarm.clear();
}
我有这段代码的问题是,载体被清除,每次...如果我希望它击中的大小限制后,才清空的20 ....
任何人都可以发现哪里出错了?...?
首先,*哪个向量*?你有两个。其次,“Rightarm”和“Leftarm”都会随着你在这里的代码被清除。上面的for循环的终止保证了。看看每个for-loop的持续状态。现在看看每个清除相应向量的if条件。嗯.... – WhozCraig 2013-03-27 19:28:36
3个向量只有2个右臂和左臂以及2个迭代器......并且这就是我遇到的问题,它总是清除我想要向量被清空的位置,只有当它们达到最大容量时20 – Tomazi 2013-03-27 19:31:18
您只需*将* size *设置为20.因此,根据您默认构建的“Point”,每个状态下有20个对象。然后你重复遍历每一个,当你到达最后时停止,并清除如果你达到最后。也许使用capcity()并检查size()会更好。 – WhozCraig 2013-03-27 19:33:43