c++使用for循环的最佳方法

标签 c++ for-loop iteration stdvector

我脑子里一直在想这个问题...... 我有一个 std::vector 来迭代: 哪种迭代方式最好(更快)?

这是使用迭代器的代码:

// using the iterator
for( std::vector <myClass*>::iterator it = myObject.begin( ); it != myObject.end( ); it++ )
{
    (*it)->someFunction( );
}

这里是“正常”模式...

// normal loop
for( int i = 0; i < myObject.Size( ); i++ )
{
    myObject[i]->someFunction( );
}

感谢您的建议!

最佳答案

两者都不会真正更快,因为在大多数实现中 vector<T>::iterator只是 T* 的类型定义和 size被缓存。

但是做++it而不是 it++是个好习惯。后者涉及创建临时文件。

for(std::vector <myClass*>::iterator it = myObject.begin( );
                           it != myObject.end( );
                           ++it)
                           ^^^^  

在其他容器上,例如 map , list等等。对于非平凡的迭代器,后增量和前增量之间的区别可能会变得很明显。

关于c++使用for循环的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6706059/

相关文章:

c++ - BitBlt 两个图像在另一个之上

c++ - 是否可以在不完全重构的情况下在现有 C++ 程序中使用(某些)AOP 概念?

c++ - 将基类指针的构造函数复制到子类

r - R 中的迭代,for 循环的奇怪结果

Java 列表最佳实践

C++ vector 迭代错误

c++ - 错误 "requested alignment is not an integer constant"

javascript - 如何根据其他循环中的变量创建定时循环?

python - 循环数据帧并生成汇总统计数据时出现问题

ios - 如何迭代多个 NSDictionary 的键值之一,并将它们添加到 NSMutableArray?