![](/img/trans.png)
[英]Why do we need to use folly::fbvector instead of std::vector with allocator which reserve large uncommited area initially?
[英]Why do we need to use std::vector::pointer to access elements?
通常我們可以使用向量數組訪問器來訪問元素並修改元素,為什么我們需要指針?
http://msdn.microsoft.com/en-us/library/7e4tx21z(VS.71).aspx
在std::vector
便利類型為typedef
命名pointer
的存在與value_type
, reference
, allocator_type
, size_type
等無數其他typedef
的存在沒有區別。您可以在此處找到完整列表。 這些別名在常規設置中非常有用。 假設您正在編寫一個接受一些容器的泛型函數,並且想要創建一個T*
類型的實例,其中該容器包含T
類型的對象。 對於std::vector
(例如,通用V
型)特殊化(可能也適用於其他一系列STL容器),您可以將其作為類型名typename V::value_type *
或更簡單地作為typename V::pointer
。
如果您認為沒有必要在std::vector
輸入pointer
類型,那不是必須的。
vector
可以看作是一個托管的,動態大小的數組,它支持數組可以執行的所有有意義的操作,即使它具有兼容的內存布局並且在許多情況下也可以用作數組。
如果可以通過指針訪問數組中的元素,則它也應該在vector
可行。
pointer
類型是T *
的簡化,因為vector
是模板。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.