std::vector::size
を返すsize_t
ので、最大2^32個の要素を保持できると思います。
はるかに多くの要素を保持できる標準のコンテナ、たとえば2 ^ 64や、たとえばaによって「インデックス付け」される ように微調整する方法はありますか?std::vector
unsigned long long
std::vector::size
を返すsize_t
ので、最大2^32個の要素を保持できると思います。
はるかに多くの要素を保持できる標準のコンテナ、たとえば2 ^ 64や、たとえばaによって「インデックス付け」される ように微調整する方法はありますか?std::vector
unsigned long long
もちろん。64 ビット プログラムをコンパイルします。size_t
その場合、64ビット幅になります。
しかし、実際にすべきことは、一歩下がって、なぜこれほど大きなベクトルが必要なのかを考えることです。ほとんどの場合、そうではなく、取り組んでいる問題を解決するためのより良い方法があるからです。
size_t
には定義済みのサイズはありませんが、32 ビット コンピューターでは多くの場合 2 32に制限されています。
std::vector
はすべての要素に対して連続したメモリを保持する必要があるため、サイズを超える前にメモリが不足します。
プログラムを 64 ビット コンピューター用にコンパイルすると、より多くのスペースが確保されます。
さらに良いことに、std::vector
適切かどうかを再検討してください。 何兆もの隣接するオブジェクトをメモリに直接保持する必要があるのはなぜですか?
std::map<unsigned long long, YourData>
大きなインデックスのみが必要で、何兆ものオブジェクトを実際に保存しようとしない場合は、を検討してください。