2011-11-10 55 views
3

我需要每次插入一個向量的末尾,2個元素。哪個函數更快push_back,插入C++

我想知道做vector.insert(iter_first,iter_second)比做vector.push_back(first)還是vector.push_back(second)更快?

也許另一種選擇是創建一個結構是這樣的:

struct T{int a; int b;}; 
T t; 
t.a = first; 
t.b = second; 
X.push_back(t); 
+9

什麼都不會影響你。繼續。 –

+0

你不應該根據一些人說可能會稍微快一點來構建你的數據。使用有意義的東西。如果這兩個值在邏輯上屬於一個整體,那麼無論有任何潛在的性能影響,它都可能成爲一個結構。 – delnan

+4

簡介並參閱! –

回答

6

如果兩個元素有邏輯關係,那麼你可以使用一個結構或類。如果它們不相關,那麼出於性能原因肯定不會將它們分組。

這種過早優化的氣味。相反,編寫最清晰的代碼以便讓編譯器爲您生成代碼。這就是它的目的。考慮到易於閱讀的代碼易於維護,易於維護的代碼易於重構,並且由於誤解而不太可能產生微妙的性能缺陷。

0

在矢量的末尾插入將比插入矢量的中間或開始處快得多。

這隻會事情,當你有一個大矢量,和/或你的對象的拷貝構造函數難以置信痛苦。

0

實事求是地講,push_back會調用insert,因此調用 push_back兩次結束調用insert兩次。然而,在實踐中,如果代碼已經優化, ,如果它產生了 差異,我會感到驚訝。做什麼是合理的,如果你有 性能問題,以後再優化。