如何在C 中输出集合的最后一个元素

How to output the last element of a set in C++?

本文关键字:集合 最后一个 元素 输出      更新时间:2023-10-16

当我将3个元素插入一个集合然后调用*s.end()时,我将获得3个正确的输出,如下所示:

set<int> s; 
s.insert(1);
s.insert(2);
s.insert(3);
cout << *s.end();

i然后删除2个值并插入11,如下:

s.erase(3);
s.erase(2);
s.insert(11);
cout << *s.end();

*s.end()的新预期输出应为11。但是输出为2。没有任何线索。有什么想法吗?

预期输出:3 11
实际输出:3 2

目前尚不清楚2来自何处。

任何标准容器的end/cend/rend/crend成员函数do not 将迭代器返回到序列的最后一个元素。他们返回一个哨声值,语义上等同于一端的末端。提出它们是未定义的行为,因此您不能依靠此示例中打印出的任何结果。

您可以通过

解决此问题
cout << *std::prev(s.end());