清除向量空间
Clearing a Vector space
大家好,一个简短的问题:
我已经设置了一个向量的大小,我想做的是一旦它达到最大空间就清空这个向量。
我有这个代码:
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....
后才被清空谁能发现我在哪里做错了这个…?
Vector总是被清除,因为Leftarm.end()总是指向Leftarm的末尾。如果Leftarm有6个元素,那么LeftIter指向第6个元素的末尾。因此,在您的代码中,左向量将始终被清除。修改你的代码,包括这部分:
if(Leftarm.size()==20) //or >=20
{
Leftarm.clear();
}
相关文章:
- 根据组件 1、2(和 3)对空间 (2D/3D) 向量进行排序
- 重载运算符 + 用于向量:命名空间标准
- 访问向量字段的键 - 枚举类还是命名空间中的枚举?
- Boost ODEINT:具有自定义类和向量空间代数的受控步进器
- 空向量占用的空间是否与指向当前设置为 nullptr 的类型的指针一样多
- 向量push_back的空间复杂性
- 我如何允许向量传递到info(),capture(),warn()等,同时避免非法扩展std名称空间
- 将 boost odeint 与 std::map 和自定义向量空间代数一起使用时,没有可行的重载'='
- C++:std::向量,两端留有空间
- C 将字符串按空白空间将字符串拆分,除非将其封闭在引号中并存储在向量中
- 如何通过空间分开输入并将其存储在C 中的向量中
- 在编译时推导整个向量空间
- 在立方体差空间中生成离散向量
- 冗余命名空间声明向量
- 使用指定数量的单位化空间初始化向量
- 时间和空间复杂性在二叉树的每个级别创建元素向量(NON-BST)
- 是在连续空间中分配的嵌套向量
- GCC 编译时对命名空间中的向量进行排序时错误
- 如何在不分配更多存储空间的情况下从数组初始化向量
- 如果向量是全局定义的,什么时候分配内存空间