是开始()==结束()任何空()向量?
我早就认为对于任何空的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()是一样的。
是的,那是真的。 这是certificate 。 当然,对于空向量, std::distance(a.begin(), a.end()) == 0
。