programing tip

empty () 벡터에 대해 begin () == end ()입니까?

itbloger 2020. 11. 18. 08:37
반응형

empty () 벡터에 대해 begin () == end ()입니까?


나는 오랫동안 빈에 대한 것으로 가정 한 std::vector V , V.begin() == V.end(). 그러나 나는 이것이 항상 사실 이라고 말하는 C ++ 사양에서 아무것도 볼 수 없습니다 . 그것은 반드시 사실입니까, 아니면 대부분의 구현에서 사실입니까?


예, 그것이 empty()모든 컨테이너 대한 표준 요구 사항 입니다.

§ 23.2.1 C ++ 11 표준의 표 96은 다음과 같이 말합니다.

 +----------+---------------+----------------------+
 |Expression|  Return Type  | Operational Semantics|
 |----------|---------------|----------------------|
 |a.empty() |Convertible    |a.begin() == a.end()  |
 |          |to bool        |                      |
 |          |               |                      |
 +-------------------------------------------------+

23.2.1 일반 컨테이너 요구 사항 , 특히 표 96 컨테이너 요구 사항 에는

a.empty()bool, 운영 의미 체계 로 변환 가능a.begin() == a.end()

그때

6 begin()은 컨테이너의 첫 번째 요소를 참조하는 반복자를 반환합니다. end()컨테이너의 마지막 끝 값인 반복자를 반환합니다. 컨테이너가 비어 있으면begin() == end();

(강조 광산)


http://www.cplusplus.com/reference/vector/vector/end/

컨테이너가 비어 있으면 end ()는 begin ()과 동일합니다.


응 그것은 사실이야. 여기에 증거가 있습니다. 그리고 물론 std::distance(a.begin(), a.end()) == 0빈 벡터의 경우입니다.

참고 URL : https://stackoverflow.com/questions/17796200/is-begin-end-for-any-empty-vector

반응형