如果容器可能包含大量项目,从性能角度来看,应该写一个
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)。
答案 0 :(得分:5)
是的,end()
的复杂性对于所有容器都是不变的。表"容器要求"在C ++标准23.2.1中这样说:
a.end()常量
答案 1 :(得分:4)
根据C ++标准函数end()
的表96中描述的容器要求
不断复杂。