1

長さが 64 ビットを超える整数を格納したいと考えています。各エントリがアプリケーションに追加されると、整数あたりのビット数は数百万に達する可能性があります。そして、64 個のそのような (同じ長さの) 整数に対して、ビットごとの AND 演算を実行する必要があります。

では、操作を時間効率的にするための最適な C++ データ構造は何でしょうか? 以前は、長さを動的に増やすことができるため、ベクトルを検討していました。その他のオプションは、std:bitset を使用することです。

しかし、これらの両方のアプローチでビット単位の AND を実行して、最も時間効率の良い方法で実行する方法がわかりません。

ありがとう

4

2 に答える 2

3

GNU Multiprecision Libraryは、優れた任意精度の整数ライブラリです。コンパイラ/CPUの仕様に合わせて大幅に最適化されている可能性が高いため、最初のスタートとしてそれを使用し、十分に高速でない場合は、独自の特定の実装をロールバックします.

于 2012-04-29T03:16:04.797 に答える
0

大きなデータを取得するときにベクトルのメモリを再割り当てするのは非常にコストがかかるため、定義します

struct int_node{
    bitset<256> holder; 
    int_node *next_node;
}

このアプローチにより、メモリ管理の時間が節約され、ビット単位の操作でいくつかのサイクルが節約されると思います。

于 2012-04-29T06:43:37.583 に答える