Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vector类具有继承层次结构。有人能解释同样的情况吗? 模板 类向量 :public\u Vector\u alloc_Vector_Stl - Fatal编程技术网

vector类具有继承层次结构。有人能解释同样的情况吗? 模板 类向量 :public\u Vector\u alloc

vector类具有继承层次结构。有人能解释同样的情况吗? 模板 类向量 :public\u Vector\u alloc,vector,stl,Vector,Stl,它可能继承自另一个处理内存分配的类。如果该类没有数据成员,向量可以受益于空基优化,并且\u vector\u alloc将不占用内存 如果vector将有一个类似\u vector\u alloc分配器的数据,即使数据是空的,数据成员也总是需要一个字节,因为C++要求所有数据成员都有一个不同的地址。 迭代器: 对于std::vector,迭代器基本上是指针的包装器,并且很可能包含作为单个数据成员的指针。它有额外的数据成员,以满足中定义的所有约束。(对于std::vector::iterator,

它可能继承自另一个处理内存分配的类。如果该类没有数据成员,
向量
可以受益于空基优化,并且
\u vector\u alloc
将不占用内存

如果
vector
将有一个类似
\u vector\u alloc分配器的数据,即使数据是空的,数据成员也总是需要一个字节,因为C++要求所有数据成员都有一个不同的地址。
迭代器:

对于
std::vector
,迭代器基本上是指针的包装器,并且很可能包含作为单个数据成员的指针。它有额外的数据成员,以满足中定义的所有约束。(对于
std::vector::iterator
RandomAccessIterator

但是,迭代器应该具有的其他成员(例如
std::vector::iterator::value\u type=T
)总是通过
std::iterator\u traits::value\u type
访问。这也允许将原始指针用作迭代器,因为STL定义了
std::iterator\u traits::value\u type=T
。所以指针在技术上已经是连续内存的迭代器了

其他容器的迭代器更复杂。例如,在
std::unordered_map::iterator
中,项目分组在不同的存储桶中。迭代器是一个单独的类,不是从容器派生的。因为它是一个内部类(在类的命名空间中定义),所以它可以访问容器的私有成员,并且在逻辑上是容器的一部分


迭代器的常量不正确:
std::vector::iterator
始终为它当前指向的项提供非常量访问权限,即使对迭代器只有常量访问权限。因此每个容器类包含两个迭代器类:
std::vector::iterator
std::vector::const\u iterator
。使用const访问容器时,只能从容器中获取
const\u迭代器。

具体说明什么?我对STL编程不熟悉。我想知道这里如何使用vector_alloc和vector_base_类型。我使用的是visual studio 2015,您可以解释一下迭代器的概念吗。他们怎么适应这里。在继承层次结构中它们来自哪里?据我所知,它们的行为就像指向容器元素的指针。他们如何能够指向任何容器的元素?
template<class _Ty,
    class _Alloc = allocator<_Ty> >
    class vector
        : public _Vector_alloc<_Vec_base_types<_Ty, _Alloc> >