gpt4 book ai didi

c++ - std::vector::back 和 vector::operator[ vector::size() - 1] 之间的区别

转载 作者:搜寻专家 更新时间:2023-10-31 01:53:32 25 4
gpt4 key购买 nike

有区别吗:

mvt_act_idx = openCloseList.size()-1;
openCloseList[mvt_act_idx].A += a;

 openCloseList.back().A += a;

除了可读性?

最佳答案

mvt_act_idx = openCloseList.size()-1;
openCloseList[mvt_act_idx].A += a;

如果 openCloseList 为空,无符号减法将产生一个巨大的值,然后用于索引 vector 。索引运算符可以断言,也可以不断言。

openCloseList.back().A += a;

如果 openCloseList 为空,则 back 操作可能断言,也可能不断言。

在出现此类错误的情况下,back 中的错误可能更容易理解。

无论如何,第一个代码片段可能会与一些不使用无符号整数作为数字的指南相冲突(除了模行为简化和阐明代码的地方),而调用 back 不能与任何此类指南相冲突。

关于c++ - std::vector::back 和 vector::operator[ vector::size() - 1] 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11049154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com