2016-07-22 80 views
1

說我有通過參考以下通:通過引用(指向對象的指針向量)比傳遞值更快嗎?

foo(std::vector<someClass *> const &bar)

比較由值來傳遞

foo(std::vector<someClass *> bar)

我讀,當涉及到基本數據類型,使用傳值將被優先考慮,而通過參考傳遞類或結構等大數據。那麼指向對象的指針向量

+0

如果按值傳遞指針向量,則除了創建內部向量結構的副本外,還將創建指針向量的副本。 – rcgldr

回答

3

這很簡單,需要複製的字節數量。

當您通過int時,其大小與其指針大小之間沒有太大差異(如果有)。由於該值通常在寄存器中,因此速度稍快。

如果傳遞更大的結構或數組,則複製內容(用於by-value)比複製它的指針(對於by-ref)要花費更長的時間。

指向對象指針的向量再次可能是多個字節,因此引用速度更快。