-1

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

4

2 回答 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 回答