-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[]

于 2012-06-29T11:45:35.277 に答える