我知道在索引向量时有办法做或不做边界检查,特别是在push_back()上,即使我知道向量的容量足够大(即,我保留足够),我运行循环将元素推入其中,我假设因为它动态调整大小,所以总是必须对每个push_back进行边界检查(或大小检查)。
如果是这种情况,那么我认为如果你知道你不会超过容量,那么类似fast_push()就会很有用。
我听说过一些矢量库的声称更快,例如这个http://andreoffringa.org/?q=uvector,但是当我知道边界检查获胜时,我没有特别注意push_back()的问题&#39不需要。链接中的一个声称速度提升了50%。其中一个是在你不需要的时候阻止建筑价值初始化,以及其他一些事情。
感谢。
答案 0 :(得分:-1)
从C ++ 11开始,std :: vector :: emplace_back(...)就增加了。此函数将构建一个元素,可以提高性能。
你不应该担心std :: vector中的范围检查。如果向量足够大,那么只有一条指令和分支预测总是正确的。