std::vector<Foo>
(またはランダムアクセス反復子を持つすべてのコンテナ)をループすると、符号なし整数変数i
が使用されます。規範を尊重したい場合は、std::size_t
か、コンテナ自体が指定した型を使用する必要がありますか:std::vector<Foo>::size_type
?std :: size_tまたはstd :: vector <Foo> :: size_type?
私は(読みやすさの理由のために)std::size_t
を選択した場合、私はstd
名前空間内のすべてのコンテナのすべての実装がsize_type
としてstd::size_t
使用していることを確認することができますか?
注:互換性の理由から、私はC++ 98のみを使用します。
いいえ、わからないです。狭い変換を避けたい場合は、コンテナが提供するタイプを使用してください。 – StoryTeller
あなたが持つことができる楽しいことは 'size_t'が' unsigned long'のtypedefであり、 'std :: vector :: size_type'が64ビットLinuxマシンで' unsigned long long'になることです。両方とも64ビット幅で、同じ範囲を持ちますが、同じタイプではありません。 (例:http://coliru.stacked-crooked.com/a/06c88c51b0cf219b) – NathanOliver
テンプレートクラスは、 '' std :: size_t''と ' 'std :: vector :: size_type''は同じサイズです(私は今実装しようとすることはできませんが、それは実行可能であると確信しています)。 –
nefas