【发布时间】:2020-09-12 06:02:05
【问题描述】:
我正在尝试打印集合 set<int>s; 的最后一个元素,其中实际最后一个元素是 9。
set<int>:: iterator it=s.begin();
while(it!=s.end())
{
cout<<*it<<endl;
it++;
}
当我使用这个循环时,通过这个集合,它表明最后一个元素是 9,这是正确的。
但是当使用这段代码时,它显示最后一个元素是 4,这是不正确的。
int setint= *s.end();
cout<<setint<<endl;
但是当我使用此代码打印集合的第一个元素时,它会正确打印第一个元素
int setint= *s.begin();
cout<<setint<<endl;
我该怎么办?
【问题讨论】:
-
end()将一个不可解引用的迭代器返回到一个虚构元素,该元素位于实际最后一个元素之后的一个位置。递减它以使迭代器到达最后一个元素。 -
请阅读
end()方法的文档。 -
如果你仔细观察你的第一个 sn-p,你会发现
it == s.end()没有执行 while 循环,最后一次迭代是s.end()之前的元素 -
库中的所有区间都是半开的,由开头和结尾指定。