我有一个表示视频游戏中角色的属性修改的结构体,以及一个“耗尽”一个回合/阶段的buff的函数:
typedef struct CharacterBuff {
BuffTypeEnum buff_type;
int value; // < 0 for nerfs, > 0 for buffs
int phases; // < 0 for infinite phases
} CharacterBuff;
bool pass_phase(CharacterBuff* character_buff) {
if (!character_buff) { return false; }
if (character_buff->phases < 0) { return false; }
--(character_buff->phases);
return character_buff->phases <= 0;
}
我有一个CharacterBuff
结构体的向量,我循环通过这些向量,并在每个向量上使用pass_phase
,如果pass_phase
返回true,则删除它们。我如何以安全的方式这样做?如果可能,请批评代码中的错误,以及更好的替代方法。
我不知道如何在遍历c++向量元素时移除它以及其他向量算法,所以我没有做太多尝试,而且我搜索的其他答案也没有使用指针。
1条答案
按热度按时间voase2hg1#
我发现
std::remove_if
可以使用引用,但不能使用指针,所以我修改了pass_phase,使用引用代替。