![](/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.