タイトルは最初はばかげているように聞こえるかもしれませんが、しばらくお待ちください。:)
size_t
とを使い始めて以来、覚えている限り、をptrdiff_t
使ったことはありません。int
最近使用したことを覚えている整数データ型は、次のいずれかに分類されます。
(符号なし)メモリ内データ構造へのインデックスに関連付けられた整数(例
vector
)。
ほとんどの場合、これに最も適切なタイプはsize_t
(または...::size_type
、さらに1マイル進む場合)です。
整数が実際にインデックスを表していない場合でも、多くの場合、それはまだ何らかのインデックスに関連付けられsize_t
ているため、適切です。の署名付きバージョン
size_t
。多くの場合、これに最も適したタイプはであるように思われptrdiff_t
ます。これが必要な場合は、イテレータを使用していることが多いためです。したがってsize_t
、ptrdiff_t
どちらもイテレータに適しています。long
。_InterlockedIncrement
(参照カウント)のために時々これが必要になります。(
unsigned
)long long
、ファイルサイズを保持するために使用されます。unsigned int
またはunsigned long
、「カウント」の目的に役立ちます(たとえば、100万回の反復ごとに、UIを更新します)。unsigned char
メモリへの生のバイトレベルのアクセス用。
(補足:signed char
どちらの用途も見つかりませんでした。)intptr_t
またuintptr_t
、オペレーティングシステムのハンドルやポインタなどをときどき保存するために使用します。
重要なことの1つの特定の側面はint
、オーバーフローしてはならないことです(未定義の動作であるため)。したがって、特にコンパイラーが16ビットとして定義している場合は、カウントに確実に使用することさえできません。
それでは、いつ使用する必要がありますかint
(あなたの依存関係がすでにそれを必要としている場合を除いて)?
少なくとも新しく書かれたポータブルコードで、今日それを実際に使用することはありますか?