对于任何empty()向量,begin()== end()吗?

Old*_*ier 66 c++ stdvector

我一直认为,对于任何空std::vector V,V.begin() == V.end().然而,我在C++规范中没有看到任何说明这一点始终是真的.它是否一定是真的,或者在大多数实现中是否恰好是真的?

Rap*_*ptz 85

是的,这就是标准要求它适用empty()于任何容器.

§23.2.1C++ 11标准的表96说:

 +----------+---------------+----------------------+
 |Expression|  Return Type  | Operational Semantics|
 |----------|---------------|----------------------|
 |a.empty() |Convertible    |a.begin() == a.end()  |
 |          |to bool        |                      |
 |          |               |                      |
 +-------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)


jua*_*nza 22

23.2.1一般容器要求,特别是表96 集装箱要求具有

a.empty()可转换为bool,操作语义a.begin() == a.end()

然后

6 begin()返回一个迭代器,引用容器中的第一个元素.end()返回一个迭代器,它是容器的过去值.如果容器是空的,那么begin() == end();

(强调我的)