2015-04-15 104 views
-6

boost :: container :: vector與std :: vector的性能如何比較,以及哪些因素對其有顯着影響?標準矢量和增強矢量的push_back:哪個更快?

特別是,我聽說std :: vector push_back比vector []要慢。這是如何比較提升?

+1

您的預期用途的基準測試結果是什麼? –

+2

*我聽說std :: vector push_back與vector [] *相比較慢,這兩件事情根本不會做同樣的事情,所以比較它們的速度是沒有意義的。 – Borgleader

+0

std :: vector在調試版本中可能會比較慢(特別是在使用Microsoft(dinkumware)時)。在發佈版本中,應該沒有區別。 –

回答

1

矢量是一個簡單的概念。有許多std實現,一個boost實現,一個MFC實現以及其他十萬個實現。在摘要中它們應該都相當接近相同的速度。

在所有這些方面,將push_backoperator[]進行比較是沒有意義的,因爲它們做的事情完全不同。一個檢查容量,可能重新分配/移動,在後面創建一個新元素。另一個只是訪問一個已經存在的元素。但是,由於operator[]實際上並沒有什麼,它總是會更快。