std::vector::size()
size_type
は、符号なしで、通常は と同じ を返しますsize_t
。たとえば、64 ビット プラットフォームでは 8 バイトです。
対照的に、 64 ビット プラットフォームでも通常 4 バイトQVector::size()
の を返します。int
これは署名されているため、2^32 の途中までしか移動できません。
何故ですか?これは非常に非論理的であり、技術的にも制限されているように思われます。また、2^32 を超える数の要素が必要になる可能性はほとんどありませんが、signed int を使用すると、明確な正当な理由もなく、範囲が半分になります。おそらく、すべてのコンテナが意味のないサイズの型を返すようにすることを決定した人ではなく、i
として宣言するのが面倒な人々に対するコンパイラの警告を避けるために、より良い解決策でしょうか? その理由はおそらくそのばかげたことではないでしょうか?uint
int