我一直认为,对于任何空的 std::vector V,V.begin() == V.end()。然而,我在 C + + 规范中没有看到任何向 一直都是说明这一点的内容。在大多数实现中,它必然是真实的还是只是碰巧是真实的?
std::vector
V.begin() == V.end()
是的,没错。这是 证据。当然,std::distance(a.begin(), a.end()) == 0是一个空向量。
std::distance(a.begin(), a.end()) == 0
是的,这就是标准要求的 empty()对任何容器的要求。
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货柜要求有
可转换成 bool操作语义学为 a.begin() == a.end()
bool
a.begin() == a.end()
然后
6 begin()返回一个引用容器中第一个元素的迭代器 是容器的 past-the-end 值。 < strong > 如果容器为空,则 begin() == end();
begin()
begin() == end();
(强调我的)
Http://www.cplusplus.com/reference/vector/vector/end/
如果容器为空,end ()与 start ()相同。