2016-08-06 6 views
-1

だからオブジェクトの増加シーケンスを(私は幸運にも、おそらく以上32ビットの範囲の固有番号に各オブジェクトを変換することができる)を有します。だから一般性を失うことなく、私はint_64のシーケンスを持っていると仮定しよう。あなたはsize_tのを超え、あなたは(順不同)のセットで作業しているかのようにあなたはそれで作業する必要がある(すなわち、検索を実行し、重複を避けるが、順序は大したことではない)の長さを有する配列を持っている場合、あなたは何をしますか。以前私はブースト:: unordered_setで働いていたが、これはsize_tのあるMAX_SIZEを持っている...それは、コンテナを持っている(あるいはブースト:: unodered_setを延長)することが可能であることがよりsize_tの要素を保持することができるように?シーケンスが大きすぎる場合は、シーケンスをファイルに保存してファイル内で検索すれば効率的でしょうか?(順不同)、設定されたコンテナ

+0

あなたの問題は何ですか?効率?データにどのような操作を実行する必要がありますか? –

+0

私の問題は、私が扱っている通常の容器です。 std :: set、boost :: unordered_setなどは、ある量(例えば、int32値の最大値)を超えないmax_sizeを持っていますが、これ以上の値を持つデータがあり、このためにコンテナが必要ですデータ。 – quantum

+0

なぜ 'set'タイプが必要ですか?通常の 'vector'を使うのはどうですか?私は重複をしたくないと私は時々私のデータで重複を取得し、私は –

答えて

0

コンテナの上限は赤いニシンのビットです:お使いのシステムは、最初のアドレス空間oitnof実行されます。

ライブラリをしたい場合は、stxxlは、ディスクバックアップされた容器を持っています。または、SQLまたは他の種類のデータベースを使用してください。


は私がしなければならなかった、と私は自分のデータベースやstxxlを実装することができなかった場合、私は小さいサイズにダウンハッシュでしょう(24ビットと言う)と、そこに直接N要素に追いつきます。サイズを知る必要があるとき、またはメモリ内の要素がいっぱいのときは、その24ビットのハッシュのディスク上のテーブルを読み込みます。

多分鎖先物は値2^24のノードを更新するために、非同期ディスクアクセスを許可、フルサイズを計算します。

+0

はい、これは多かれ少なかれ私が考えていたものです。多かれ少なかれ、独自のデータ構造を作成する必要があります。もちろんstxxlはオプションですが、セットもサポートしていますか? – quantum

関連する問題