0

这是关于 std::vector 成员结构中数组范围的问题。

假设我有下一个代码:

struct memberStruct {
...
char array[5];
...
};

std::vector <memberStruct> _workVector;

问题:哪些矢量清除方法(clear/erase/pop_back)确保 memberStruct.array 取消分配 AKA 超出范围?

4

3 回答 3

5

该成员array是封闭结构的一部分,memberStruct无需分配或解除分配。将vector分配/取消分配 和 的实例,memberStruct这也将处理这些实例中的成员。

于 2013-11-03T14:07:31.083 回答
2

array将成为memberStruct. 这个结构将是 5 个字节 + 其他成员 + 填充。因此,您的问题的答案是:您提到的每种方法都可以解决问题。

于 2013-11-03T14:08:40.527 回答
2

考虑到

...
char array[5];
...

相当于

...
char array_0;
char array_1;
char array_2;
char array_3;
char array_4;
...

事情可能会变得清晰。

这与

char *array = new char[5];

其中五个字节存储在您的结构之外,并且确实需要特殊处理。

于 2013-11-03T14:33:49.530 回答