0

私は基本的にビットフラグ検索マスクを扱っており、ベクトルを使用しています。これらのインデックスは、マシンの最大整数(stdint.hで定義)まで上げる必要があります。

基本的に問題は

searchMask[ UINTMAX_MAX] = false; // or any value > unsigned int

次の警告が表示されます

warning: C4244: 'argument' : conversion from 'uintmax_t' to 'unsigned int', 
possible loss of data

のようなものを使用しunsigned char* = "1110010..."てビットをそのように反転することを検討しましたが、C文字列を処理することは常に苦痛であり、char配列インデックスにアクセスすると同じサイズの問題が発生するのではないかと思います。

のインデックスをvectorオフにすることはできますuintmax_tか、それともC文字列ルートを使用する必要がありますか?

4

1 に答える 1

3

事実上、すべての STL コンテナがsize_tサイズ タイプとして を使用します。したがって、システムによっては、size_tとして定義される場合がありunsigned int、これはおそらく 32 ビット整数になります。それは、コンパイラが不平を言っている理由を説明します。

UINTMAX_MAXとして定義されてUINT64_MAXいるため、32 ビット整数には収まりません。マクロを使用してみるUINT32_MAXか、プラットフォームに依存せずに を使用してstd::numeric_limits<size_t>::max()ください。

また、使ってみてくださいstd::bitset<N>

于 2013-02-25T05:02:40.103 に答える