C++ 11標準がさまざまなことについて述べていることは次のとおりです。
§ 23.2.1
Expression: difference_type
Return Type: signed integer type
Operational Semantics: -
Assertion/note, pre-/post-condition: is identical to the difference type of iterator and const_iterator
Complexity: compile-time
Expression: size_type
Return Type: unsigned integer type
Operational Semantics: -
Assertion/note, pre-/post-condition: size_type can represent any non-negative value of difference_type
Complexity: compile-time
Expression: size()
Return Type: size_type
Operational Semantics: distance(begin(),end())
Assertion/note, pre-/post-condition: -
Complexity: constant
size()
が同等であることを確認しましょうend() - begin()
:
§ 24.4.4/4
distance():
Effects: If InputIterator meets the requirements of random access iterator,
returns (last - first); otherwise, returns the number of increments needed
to get from first to last
コンテナーにはランダム アクセス イテレーターがあるため、これは当てはまります。それはそれです。最初のボックスでわかるように、
size_type can represent any non-negative value of difference_type
それから、キャスト from difference_type
tosize_type
はすべての非負の値に対して有効である必要があることがわかりました。