有效地填充std :: vector:push_back vs operator []

时间:2017-11-06 08:35:52

标签: c++ vector

假设我们需要在std :: vector中存储大量给定类型的对象。元素的数量仅在运行时期间已知,但一旦确定就不会更改。

之间的性能是否有明显差异
  • 将矢量初始化为最终大小,然后直接访问每个元素
  • 创建一个空向量,然后用push_back填充它?

    /* Variant a*/
    std::vector<foo> vector_a;
    for(int i = 0; i < NumOfElems; i++){ // NumOfElems is known
        vector_a.push_back(GetNextElem());
    }
    
    /* Variant b */
    std::vector<foo> vector_b(NumOfElems);
    for(int i = 0; i < NumOfElems; i++){
        vector_b[i] = GetNextElem();
    }
    

我想知道使用 push_back 是否有任何开销直接访问elemens,当大小固定并且已知时可以避免。

谢谢。

0 个答案:

没有答案