std::unordered_set
を使用して、配列内にいくつの異なる数字があるのかをカウントしています。
私がしようとしているのは、数字の1つが配列から削除されているときに、特定のバケットのサイズを1減らすことです。unordered_setの特定のバケットのサイズを1減らすには?
erase()
を使ってみましたが、バケット全体が削除されました。何とかそれをする可能性はありますか?
それはこのように動作するはずです:
std::unordered_set<int> P;
P.insert(0);
P.insert(0);
printf("%d", P.count(0)); //this prints 2
//P.decrease(0) <-- I'm looking for something like this
printf("%d", P.count(0)); //this should print 1
問題の詳細について教えてください。あなたはちょうどいくつかのアイテムの出現を数えたいですか? – Carlos
@Carlos私はこのK * Kエリア内にいくつのユニークな数字があるかを数えて、すべてのK * Kエリアをチェックする大きなN * N配列を持っています。これを行うには、std :: unordered_setを使用します。 Kが非常に大きいかもしれないので、私はK * Kエリアを1つ動かすたびに一意の数字の数を削除したくないので、左の行から要素を数え、右の列。 –
私はあなたが何を意味するか知っていると思います。例を作ることが理にかなっているかもしれません。これを解決するには、左上隅がルートである各領域の接頭辞の合計のようなものを行う必要があります。 しかし、例がないと何を意味するのか分かりません。 – Carlos