私が持っている場合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
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 に答える