【发布时间】:2018-06-19 17:39:36
【问题描述】:
我几乎一直在对一组大小大于三个的元素使用迭代器,但碰巧生成的集合只包含一个元素,在这种情况下,是以下循环:
for(i = data_set.begin(); i != data_set.end(); i++)
{
//do something with the data
}
即使"data_set" 不为空,也永远不会输入,因为data_set.begin()==data_set.end()
我正在做一个单独处理这种特殊情况的测试,但代码变得一团糟,不再干净。
应该怎么做才能正确处理这个问题?
谢谢,
大叔
【问题讨论】:
-
data_set.end()是“一个过去的结尾”。它将被输入。 -
你误会
data_set.begin()==data_set.end()只是空集,句号 -
这应该可以正常工作。请在例如coliru.stacked-crooked.com 上创建minimal reproducible example 以显示错误。
-
永远不会进入 -- 你为什么不写一个小测试?你会看到它被输入了。
-
奇怪的想法,你真以为每个人都专门处理1号容器?呵呵