【发布时间】:2011-06-22 22:44:23
【问题描述】:
在我的游戏引擎项目中,我广泛使用了 STL,主要是 std::string 和 std::vector 类。
在许多情况下,我必须遍历它们。目前,我的做法是:
for( unsigned int i = 0; i < theContainer.size(); i ++ )
{
}
- 我做对了吗?
如果不是,为什么,我应该怎么做?
size() 是否真的在每个循环周期中执行此实现?性能损失可以忽略不计吗?
【问题讨论】:
-
你应该使用
size_t而不是unsigned int。 -
@Maxpm - 或者,更好的是,
::std::vector<Foo>::size_type。 -
begin() 和 end() 保证复杂度为 O(1)。虽然 size 在一般容器上只能保证 O(n) (尽管字符串和向量可能对通用容器有额外的保证)。