vector中用erase删除只是删除指针吗
- 提问者网友:人傍凄凉立暮秋
- 2021-02-09 16:06
- 五星知识达人网友:酒者煙囻
- 2021-02-09 16:25
标准下v.erase输入参数是迭代指针,而&v[1]是一个int地址
补救做法,强制转换
1、v.erase( static_cast
2、v.erase( (vector
标准做法,迭代器操作
3、v.erase( v.begin()+1 );
ps:另外for循环中的v[0]也因该是v[i]
- 1楼网友:往事埋风中
- 2021-02-09 16:36
。。没啥可说的。反正我看不懂。
// template function remove
template<class _fi, class _ty> inline
_fi remove(_fi _f, _fi _l, const _ty& _v)
{_f = find(_f, _l, _v);
if (_f == _l)
return (_f);
else
{_fi _fb = _f;
return (remove_copy(++_f, _l, _fb, _v)); }}
// template function remove_if
template<class _fi, class _pr> inline
_fi remove_if(_fi _f, _fi _l, _pr _p)
{_f = find_if(_f, _l, _p);
if (_f == _l)
return (_f);
else
{_fi _fb = _f;
return (remove_copy_if(++_f, _l, _fb, _p)); }}
// template function remove_copy
template<class _ii, class _oi, class _ty> inline
_oi remove_copy(_ii _f, _ii _l, _oi _x, const _ty& _v)
{for (; _f != _l; ++_f)
if (!(*_f == _v))
*_x++ = *_f;
return (_x); }
// template function remove_copy_if
template<class _ii, class _oi, class _pr> inline
_oi remove_copy_if(_ii _f, _ii _l, _oi _x, _pr _p)
{for (; _f != _l; ++_f)
if (!_p(*_f))
*_x++ = *_f;
return (_x); }