C++ vector中保存的全是new的结构体如何删除
时间: 2024-01-08 22:03:52 浏览: 33
你可以使用`delete`关键字来删除在`vector`中保存的通过`new`创建的结构体对象。首先,你需要遍历`vector`,对每个结构体对象使用`delete`进行释放。然后,你可以调用`clear()`函数来清空整个`vector`。
以下是一个示例代码:
```cpp
#include <iostream>
#include <vector>
struct MyStruct {
// 结构体定义
};
int main() {
std::vector<MyStruct*> myVector;
// 向vector中添加通过new创建的MyStruct对象
myVector.push_back(new MyStruct());
myVector.push_back(new MyStruct());
myVector.push_back(new MyStruct());
// 删除vector中的对象
for (auto it = myVector.begin(); it != myVector.end(); ++it) {
delete *it; // 释放结构体对象
}
// 清空vector
myVector.clear();
return 0;
}
```
在这个示例中,我们使用`std::vector<MyStruct*>`来保存通过`new`创建的`MyStruct`对象的指针。然后,我们通过迭代器遍历`vector`,对每个指针使用`delete`进行释放。最后,我们调用`clear()`函数清空整个`vector`。
这样做可以确保在删除结构体对象之前释放它们占用的内存,并且在清空`vector`之后不会发生内存泄漏。