c – std :: vector internals
发布时间:2020-12-16 10:31:56 所属栏目:百科 来源:网络整理
导读:如何使用什么数据结构实现std :: vector?当我写作 void f(int n) { std::vectorint v(n); ...} 向量v是否在堆栈上分配? 解决方法 向量对象将在堆栈??上分配,并在内部包含指向堆上元素开头的指针. 堆上的元素使向量类具有按需增长和缩小的能力. 虽然在堆栈
如何使用什么数据结构实现std :: vector?当我写作
void f(int n) { std::vector<int> v(n); ... } 向量v是否在堆栈上分配? 解决方法
向量对象将在堆栈??上分配,并在内部包含指向堆上元素开头的指针.
堆上的元素使向量类具有按需增长和缩小的能力. 虽然在堆栈上具有向量使得对象具有在超出范围时被破坏的益处. 关于你的[]问题,vector类重载了[]运算符.我会在内部说当你做数组[1]时它基本上就是这样做的: return *(_Myfirst+ (n * elementSize)) 向量使用_Myfirst跟踪其内部堆的开始. 当矢量开始填满时,它将为您分配更多内存.通常的做法是每次需要的内存量增加一倍. 请注意,vector继承自_Vector_val,后者包含以下成员: pointer _Myfirst; // pointer to beginning of array pointer _Mylast; // pointer to current end of sequence pointer _Myend; // pointer to end of array _Alty _Alval; // allocator object for values (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |