如果我有set<Pointer*>
,Pointer*
是指向自定义类的指针,set
来自标准库。如何从设置中删除指定的Pointer*
?
答案 0 :(得分:3)
使用set&lt;&gt; :: erase函数。这是我写的一些代码来演示:
#include <set>
#include <cassert>
int main()
{
int *a = new int(1);
int *b = new int(2);
std::set<int*> s;
s.insert(a);
s.insert(b);
s.erase(b);
assert(s.find(a) != s.end());
assert(s.find(b) == s.end());
delete a;
delete b;
}
答案 1 :(得分:2)
size_type erase(const key_type& k) Associative Container Erases the element whose key is k.
无论std::set
是否包含指针或任何其他类型,这都会删除集合中的元素。如果你的指针指向一个动态分配的对象/数组,你必须记住从集合中删除它后delete
/ delete[]
(这应该不是问题,因为你已经有了指针)