提问人:Zebrafish 提问时间:7/26/2017 更新时间:6/1/2019 访问量:737
你能阻止对 push_back() 进行 std::vector 边界检查吗?
Can you prevent std::vector bounds-checking on push_back()?
问:
我知道在索引向量时,有一些方法可以做或不做边界检查,但特别是在 push_back() 上,即使我知道向量的容量足够大(即,我保留了足够大),并且我运行了一个循环将元素推回其中,我假设由于它是动态调整大小的,因此它总是必须在每个push_back上进行边界检查(或大小检查)。
如果是这种情况,那么我认为如果您知道自己不会超过容量,那么像 fast_push() 这样的东西会很有用。
我听说过一些向量库更快的说法,例如这个 http://andreoffringa.org/?q=uvector ,但是当知道不需要边界检查时,我没有特别看到 push_back() 的问题。链接中的那个声称速度提高了 50%。其中之一是在不需要时防止在构造时进行值初始化,以及其他一些事情。
谢谢。
答: 暂无答案
评论
resize
[]
vector
vector
vector
vector
vector
std::vector<point>
class Matrix
(i * rows) + (k * cols) + j
insert
push_back