-3

std::vector::sizeを返すsize_tので、最大2^32個の要素を保持できると思います。

はるかに多くの要素を保持できる標準のコンテナ、たとえば2 ^ 64や、たとえばaによって「インデックス付け」される ように微調整する方法ありますか?std::vectorunsigned long long

4

2 に答える 2

9

もちろん。64 ビット プログラムをコンパイルします。size_tその場合、64ビット幅になります。

しかし、実際にすべきことは、一歩下がって、なぜこれほど大きなベクトルが必要なのかを考えることです。ほとんどの場合、そうではなく、取り組んでいる問題を解決するためのより良い方法があるからです。

于 2013-03-19T18:09:09.107 に答える
6

size_tには定義済みのサイズはありませんが、32 ビット コンピューターでは多くの場合 2 32に制限されています。

std::vectorはすべての要素に対して連続したメモリを保持する必要があるため、サイズを超える前にメモリが不足します。

プログラムを 64 ビット コンピューター用にコンパイルすると、より多くのスペースが確保されます。

さらに良いことに、std::vector適切かどうかを再検討してください。 何兆もの隣接するオブジェクトをメモリに直接保持する必要があるのはなぜですか?

std::map<unsigned long long, YourData>大きなインデックスのみが必要で、何兆ものオブジェクトを実際に保存しようとしない場合は、を検討してください。

于 2013-03-19T18:09:58.967 に答える