vector iterator as pointer problem
Hi all
I have a problem about vector
old code i using BCB
Code:
std::vector<SkillEffectStatus> vSkillEffectStatus
.
.
.
vSkillEffectStatus.erase(&vSkillEffectStatus[i]);
BCB compile good but
when i try compile using Visual i got small error below
Quote:
Error 1 error C2664: 'std::_Vector_iterator<_Ty,_Alloc> std::vector<_Ty>::erase(std::_Vector_iterator<_Ty, _Alloc>)' : cannot convert parameter 1 from 'SkillEffectStatus *' to 'std::_Vector_iterator<_Ty,_Alloc>' f:\documents and settings\administrator.if2007\my documents\visual studio 2005\projects\bot_library\bot_library\MyPlayer.h 252
seem compiler not allow to convert iterator to pointer
i already force cast to it but failed.
Thank for your answer in advance.
Re: vector iterator as pointer problem
Code:
vSkillEffectStatus.erase(vSkillEffectStatus.begin()+i);
Re: vector iterator as pointer problem
right it work.
But many code accept pointer like this
static void remove(char *NAME){
Friend *ret = find(NAME);
if(ret!=NULL){
vFriend.erase(ret);
}
}
Can i directly convert pointer to iterator?
Re: vector iterator as pointer problem
Quote:
Originally Posted by
Teerayoot
But many code accept pointer like this
But erase takes an iterator not a pointer.
Quote:
Code:
static void remove(char *NAME){
Friend *ret = find(NAME);
if(ret!=NULL){
vFriend.erase(ret);
}
}
Depends what vFriend is and what it contains.
Quote:
Can i directly convert pointer to iterator?
Not in this situation. Especially that you don't have any benefit of using a pointer here.