我在几乎所有时间都使用一组大小超过三的元素的迭代器,但是生成的集合只包含一个元素,在本例中是以下循环:
for(i = data_set.begin(); i != data_set.end(); i++)
{
//do something with the data
}
即使"data_set"
不为空,也永远不会输入,因为data_set.begin()==data_set.end()
我正在做一个测试来单独处理这个特殊情况,但代码变得一团糟,不再干净。
应该怎样做才能妥善处理?
谢谢,
자스민
答案 0 :(得分:0)
如果集合仅包含1个元素,则:
std::next( data_set.begin() ) == data_set.end()
,因为begin()
迭代器指向容器的第一个元素,end()
指向最后一个元素后面的元素。