如何在C 中输出集合的最后一个元素
How to output the last element of a set in C++?
当我将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());
相关文章:
- lower_bound()返回最后一个元素
- 获取向量C++中第一个值和最后一个值的和
- 获取用C/C++打印的最后一个字符串
- 使用运算符 [] 引用 std::vector 上最后一个元素时出现问题<>
- 为什么这个程序返回最后一个单词而不是最长的单词?
- 为什么我的最后一个 ELSE 条件无法正确执行
- Lower_bound不适用于具有 3 个元素的向量的最后一个元素
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- 仅显示链表的最后一个元素
- 测试迭代器是否位于列表中的最后一个
- push_back通过自行创建的对象获取最后一个元素的向量
- 使用 map.end() 访问 map 的最后一个元素
- 如何知道地图中的最后一个元素是否被删除?
- std::矢量保存 只推送最后一个元素
- 反转后不返回最后一个元素
- 如何删除矢量中的重复值,最后一个除外
- 如何在C 中输出集合的最后一个元素
- C 迭代器到集合的最后一个元素
- 检查当前元素是否是集合的最后一个元素
- C++ 如何比较<int>从开始到最后一个元素的集合 -1