我的理解std::span
是它本质上包含指向容器的指针、大小和一些有用的成员函数。
template<typename T>
class SimpleSpan {
T* ptr;
size_t length;
// some member functions
}
如this question所示,我可以采用一个向量的跨度。
如果我将条目添加到向量的末尾,则可能需要调整向量的大小。调整矢量大小时,会发生以下步骤(顺序不重要)。
在具有更多空间的堆上分配了一个新数组。
向量中的条目被移动到新数组中。
到's 数组
ptr
的成员更改为新数组的开头。vector
vector
旧数组被释放。
span
如果vector
' 的数组需要重新分配并变大,会发生什么情况吗?是否在未定义的行为上调用了span
into a vector
after ?push_back
vector