c++ - vector 插入和分配之间的区别

标签 c++ pointers vector

我读到 assign 方法会在向其分配任何内容之前清除 vector 目标索引。这是否意味着如果我们有一个 vector ,例如:

vector<foo*> somevector;

然后 assign 方法实际上会在将数据复制到目标索引之前删除 foo*。

最佳答案

then the assign method would actually delete foo* before copying data to the target indexes.

不会,它只会删除指针本身但不会删除指针指向的对象。

在STL 容器中使用原始指针时需要小心。如果您在 somevector 中动态分配元素,您最终会泄漏内存。

更多的实践方法是在STL容器中使用智能指针,动态分配的内存将在以下情况下被释放:

std::vector<std::unique_ptr<foo>> somevector;

关于c++ - vector 插入和分配之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19193087/

相关文章:

c++ - EnumChildWindows 还是 FindWindowEx?

c++ - 我们需要序列化 ​​VAO 和 VBO

c++ - 当用户超过按钮点击限制时报告

ios - NSUInteger 枚举属性应该是指针还是只是原语?

c++ - 指针 vector 上的 std::find()

c++ - 如何在OpenCL中使用缓冲区分配和映射内存机制?

C++ - 以指针作为数据字段的复制构造函数

c - 错误 : ‘outList’ is used uninitialized in this function [-Werror=uninitialized]

C++在 vector 迭代中删除并返回指向对象的指针

java - 当 Vector 位于包含类中时,使用 Vector 的 addAll( ) 函数时出现问题