VS2005 中Vector的erase()问题

来源:百度知道 编辑:UC知道 时间:2024/06/03 07:30:31
定义了struct CENTER_POINT
{
int x;
int y;
int radius;
};
并且定义了vector<CENTER_POINT> m_vCenterPoints;
m_vCenterPoints.erase(&m_vCenterPoints.at(i));
当调试的时候,提示(&m_vCenterPoints.at(i))不能转换为iterator,这个要怎么转换啊?哪位高人帮忙啊?

vector所定义的erase()函数有两个版本:
erase(pos);
erase(beg, end);
以上的pos,beg,end的类型都是vector<Typename>::iterator
其中
erase(pos)的功能是移除pos位置上的元素,返回下一个元素的位置;
erase(beg, end)可以移除[beg, end)区间内的所有元素,返回下一个元素的位置<注意区间是半开半闭区间>
从你的使用来看m_vCenterPoints.erase(&m_vCenterPoints.at(i));
很明显是实参类型(指针)与形参类型(iterator)不匹配!

应该这样写:
m_vCenterPoints.erase(m_vCenterPoints.begin()+i);