是任何空()向量的 start() = = end()吗?

我一直认为,对于任何空的 std::vector VV.begin() == V.end()。然而,我在 C + + 规范中没有看到任何向 一直都是说明这一点的内容。在大多数实现中,它必然是真实的还是只是碰巧是真实的?

32639 次浏览

是的,没错。这是 证据。当然,std::distance(a.begin(), a.end()) == 0是一个空向量。

是的,这就是标准要求的 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()

然后

6 begin()返回一个引用容器中第一个元素的迭代器 是容器的 past-the-end 值。 < strong > 如果容器为空,则 begin() == end();

(强调我的)

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

如果容器为空,end ()与 start ()相同。