在C ++中,对于所有容器类型,std :: end保证是O(1)吗?

时间:2014-08-07 13:07:19

标签: c++

如果容器可能包含大量项目,从性能角度来看,应该写一个

for (auto p = std::begin(container); p != std::end(container); ++p) {...}

或者应该在循环外部访问容器

const auto& theEnd = std::end(container);
for (auto p = std::begin(container); p != theEnd; ++p) {...}

我只是想知道std::end对于集合和列表以及向量等容器是否为O(1)。

2 个答案:

答案 0 :(得分:5)

是的,end()的复杂性对于所有容器都是不变的。表"容器要求"在C ++标准23.2.1中这样说:

  

a.end()常量

答案 1 :(得分:4)

根据C ++标准函数end()的表96中描述的容器要求 不断复杂。