如果我有set<Pointer*>
,Pointer*
是指向自定义类的指针,set
来自标准库。如何从指定的一组中删除Pointer*
?
问问题
91 次
2 回答
3
使用 set<>::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;
}
于 2012-06-29T11:50:05.480 回答
2
来自SGI 的 STL 文档:
size_type erase(const key_type& k) Associative Container Erases the element whose key is k.
std::set
不管包含指针或任何其他类型的事实,这都会从集合中删除一个元素。如果你的指针指向一个动态分配的对象/数组,你必须记住在从集合中删除它之后delete
/ delete[]
it (这不应该是一个问题,因为你已经有了指针)
于 2012-06-29T11:45:35.277 回答