STL set เรียงข้อมูลอัตโนมัติ สมาชิกตัวสุดท้ายคือค่าสูงสุด ใช้ prev(end()) ได้ Iterator ชี้ตัวสุดท้าย แล้ว erase()
ตัวอย่างโค้ด
#include <iostream> #include <set> using namespace std; void display(setmy_set) { for (auto it = my_set.begin(); it != my_set.end(); ++it) cout << *it << " "; } int main() { int arr[] = {10, 41, 54, 20, 23, 69, 84, 75}; int n = sizeof(arr) / sizeof(arr[0]); set my_set; for (int i = 0; i < n; i++) my_set.insert(arr[i]); cout << "Set before delete: "; display(my_set); // ลบตัวสุดท้าย auto it = prev(my_set.end()); my_set.erase(it); cout << "\nSet after delete: "; display(my_set); return 0; }
ผลลัพธ์
Set before delete: 10 20 23 41 54 69 75 84 Set after delete: 10 20 23 41 54 69 75
วิธีอื่นๆ
// ใช้ --end() (ต้องตรวจสอบว่าไม่ว่างก่อน)
if (!my_set.empty())
my_set.erase(--my_set.end());
// C++11: ใช้ rbegin() แต่ต้องแปลงเป็น base() ก่อน (ซับซ้อนกว่า)
my_set.erase(prev(my_set.end())) // แนะนำวิธีนี้