【发布时间】:2021-12-29 07:55:02
【问题描述】:
如果您定义了要“擦除”的元素范围,那么为范围内的每个元素调用vector::erase(iterator) 还是调用一次vector::erase(iterator,iterator 更有效?
【问题讨论】:
-
我不认为存在一个绝对和明确的答案,但你可以在你的系统和你的 c++ 实现上进行测量
-
@MatG 我的想法是
vector::erase(iterator)重新分配(移动元素)内存,因此如果您需要多次调用vector::erase(iterator),效率通常低于vector::erase(iterator,iterator)。 -
@alexander.sivak 呃,你可能是对的。如果您测量,请发布您的结果!只是出于好奇,我会尝试quick-bench.com
标签: c++ algorithm vector erase-remove-idiom