c++ - 从 STL 容器中移除一些东西而不解构它

标签 c++ vector erase stl

好的,我正在使用 C++ STL 容器(当前为 vector<customType*>)。 现在我需要从容器中移除元素, 但是使用删除会解构对象,这很糟糕,因为我要把它从一个对象上取下来,然后把它放到一个变量上进行一些处理,然后再放到另一个变量上。

目前我的代码非常糟糕,我只是在读取它之后将 NULL 放在它的位置,放入我的变量中,然后放置一个 if (Q[ii]NULL) continue。 但这并不是那么好。

最佳答案

如果您有一个指针容器(这听起来像是因为您将 NULL 分配给“已删除”元素),那么从容器中删除一个元素不会 删除指向的对象。你有责任自己做。

如果您有一个对象容器(好吧,非指针对象),那么您需要在删除之前将元素从容器中复制出来。

关于c++ - 从 STL 容器中移除一些东西而不解构它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3947003/

相关文章:

C++ string::erase 删除整个字符串?

c++ - 无节点指针作为参数的二叉查找树的顺序遍历

c++ - GL_TEXTURE_CUBE_MAP 中具有不同分辨率的面孔

c++ - 为什么不为 Json::Value 使用 operator=?

c++ - 如何使用 std::reverse_iterator 删除 *AND CONTINUE*?

c++ - 删除字符串 vector 中前 2 个字符的重复项

c++ - 为什么 std::cout 在线程中被抢占但 printf 却没有?

java - 为什么我无法在 Java 中将 Vector<Vector<Number>> 转换为 AbstractList<AbstractList<Number>>?

c++ - 如何比较同一对象的两个 vector 并获取其他元素

散列 2D、3D 和 nD 向量