这是关于 std::vector 成员结构中数组范围的问题。
假设我有下一个代码:
struct memberStruct {
...
char array[5];
...
};
std::vector <memberStruct> _workVector;
问题:哪些矢量清除方法(clear/erase/pop_back)确保 memberStruct.array 取消分配 AKA 超出范围?
该成员array
是封闭结构的一部分,memberStruct
无需分配或解除分配。将vector
分配/取消分配 和 的实例,memberStruct
这也将处理这些实例中的成员。
array
将成为memberStruct
. 这个结构将是 5 个字节 + 其他成员 + 填充。因此,您的问题的答案是:您提到的每种方法都可以解决问题。
考虑到
...
char array[5];
...
相当于
...
char array_0;
char array_1;
char array_2;
char array_3;
char array_4;
...
事情可能会变得清晰。
这与
char *array = new char[5];
其中五个字节存储在您的结构之外,并且确实需要特殊处理。