提问人:Arabella Turner 提问时间:4/13/2018 更新时间:4/13/2018 访问量:505
如何在 c++ 中修改 std::list 元组中的值?
How to modify a value in a tuple in a std::list in c++?
问:
我有一个元组列表,我正在使用迭代器对其进行迭代。我正在尝试更新元组中的一个值,用于列表中未立即删除的每个元组。更新在我迭代时进行,但在我离开 while 循环后它不会持续存在。
我的代码如下所示,其中 SpecialAttacks 是在其他地方定义的函子:
void implement_Special_Attacks(std::list<std::tuple<SpecialAttack*, int>> attacks){
std::list<std::tuple<SpecialAttack*, int>>::iterator i = attacks.begin();
while (i != attacks.end())
{
std::tuple<SpecialAttack*, int> tup = *i;
SpecialAttack* attack = std::get<0>(tup);
int timer = std::get<1>(tup);
bool b = special_attack(timer, attack);
if (b){
i= attacks.erase(i++);
}
else
{
std::get<1>(tup)--;
++i;
}
}
}
答: 暂无答案
评论
void implement_Special_Attacks(std::list<std::tuple<SpecialAttack*, int>>& attacks)
std::tuple<SpecialAttack*, int> &tup = *i;
auto &tup = *i;
std::get<1>(tup)--;