【发布时间】:2020-08-26 19:35:57
【问题描述】:
标准是否保证
--list.begin() == list.end()
总是成立并且它实际上是一个有效的操作? (list 是std::list 的一个实例)。
至少 MSVC 2019 似乎是这种情况。
这在以下情况下很有用:
for ( auto i = list.begin(); i != list.end(); ++i )
{
...
list.erase(i--);
...
}
,即在迭代时删除元素,因为i 可能是列表的开头。这也需要++list.end() == list.begin() 持有;那怎么办?
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
标签: c++ iterator iteration language-lawyer stdlist