2010-11-25 84 views
2

我正在寫一些數據結構的並行實現。我想知道是否有人知道純指針和std :: vector之間的性能差異。如果你知道它的可靠文檔,請寫URL /書名/任何。歡迎任何提示!C++ std ::向量性能[需要參考]

+1

指針和`std :: vector`之間的通用性是什麼? – pmr 2010-11-25 21:14:06

+0

不幸的是,我對此一無所知,但+1對於一個非常好的,可能很常見的問題:-) – Bojangles 2010-11-25 21:15:03

+0

兩者都可以存儲任何類型的數據。我問,因爲我不知道哪一個更快。 – Adam 2010-11-25 21:15:46

回答

5

區別在於使用方法執行相對。

3

通過使用未經檢查的運算符[]並適當調整大小,可以使std :: vector像普通指針一樣快。現實情況是,矢量是指針上的編譯時抽象,而不是運行時指針,除非您選擇使用額外值。更重要的是安全向量提供了大量增加 - 調試迭代器,自動和安全的資源管理等。沒有理由使用原始指針。

編輯:我的參考是你以前做過的性能分析,你甚至認爲失去了矢量的安全性。

0

如果你的意思是比較這裏的一些手寫的動態數組std::vector有一些參考點:

  • 調整大小的因素上插入是很重要的。這個因素沒有被標準規定,但通常在1.5或2之間,並且它必須保證在插入操作中的分期恆定時間。
  • 分配器:很多性能取決於所使用的分配機制,同樣適用於指針。
  • 如果您調用​​,那麼在原始指針中不會發生邊界檢查,則可以在std::vector中發生邊界檢查。