典型的bignums是通過使用多個單詞來實現的,但是我希望儘可能便於選擇單詞大小。這是更棘手比看起來 - std::uint64_t
在許多32位編譯器可用,但std::uint32_t
很可能會在32位機器上的一個更好的選擇。所以,誘惑那麼將使用std ::爲size_t,但有一個給定的架構,std::size_t
是最有效的類型算術無法保證,例如在the new x32 Linux ABIstd::size_t
將是32位,但std::uint64_t
仍然是最好的選擇。確定用於在C++ 11中實現bignums的最有效的字大小?
C++ 11具有快/至少類型定義的各種尺寸,但它並沒有給查詢他們的相對性能的任何方式。我意識到可能沒有最好的便攜式答案,我現在最好的猜測是默認爲std::size_t
,並在配置時檢測特殊架構。但也許有更好的方法?
好編譯,我覺得uint_fast32_t或uint_fast64_t可能是最好的解決方案。它至少可以確保您的數據類型的速度和至少32/64位。這可能是他們的意思。 – Morwenn
「* C++ 11要求std :: uint64_t存在例如*」不,它不。這是可選的。又道:「但*的std :: uint32_t的很可能是一個64位的機器上一個更好的選擇*」我想你指的是「** 32位**機」 –
@NicolBolas:哎呀,你是在這兩方面是正確的。 –