如何从设置中删除一个指定的指针*?

时间:2012-06-29 11:40:48

标签: c++ stl

如果我有set<Pointer*>Pointer*是指向自定义类的指针,set来自标准库。如何从设置中删除指定的Pointer*

2 个答案:

答案 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)

来自SGI's STL documentation

size_type erase(const key_type& k)  Associative Container   Erases the element whose key is k.

无论std::set是否包含指针或任何其他类型,这都会删除集合中的元素。如果你的指针指向一个动态分配的对象/数组,你必须记住从集合中删除它后delete / delete[](这应该不是问题,因为你已经有了指针)