gpt4 book ai didi

C++ 迭代器和循环优化

转载 作者:IT老高 更新时间:2023-10-28 13:58:45 26 4
gpt4 key购买 nike

我看到很多类似这样的 c++ 代码:

for( const_iterator it = list.begin(),
const_iterator ite = list.end();
it != ite; ++it)

相对于更简洁的版本:

for( const_iterator it = list.begin();
it != list.end(); ++it)

这两种约定的速度会有什么不同吗?因为 list.end() 只被调用一次,所以第一个会稍微快一些。但由于迭代器是 const,编译器似乎会将这个测试拉出循环,为两者生成等效的程序集。

最佳答案

虽然这两个版本不一样。在第二个版本中,它每次都会将迭代器与 list.end() 进行比较,而 list.end() 的评估结果可能会在循环过程中发生变化。现在当然不能通过 const_iterator it 来修改 list;但没有什么能阻止循环内的代码直接调用 list 上的方法并对其进行变异,这可能(取决于 list 是哪种数据结构)改变结束迭代器。因此,在某些情况下,预先存储结束迭代器可能是不正确的,因为当您访问它时,它可能不再是正确的结束迭代器。

关于C++ 迭代器和循环优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/795987/

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