是开始()==结束()任何空()向量?

我早就认为对于任何空的std::vector VV.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()是一样的。

是的,那是真的。 这是certificate 。 当然,对于空向量, std::distance(a.begin(), a.end()) == 0