Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ลบสมาชิกตัวสุดท้ายของ STL Set ใน C++

STL set เรียงข้อมูลอัตโนมัติ สมาชิกตัวสุดท้ายคือค่าสูงสุด ใช้ prev(end()) ได้ Iterator ชี้ตัวสุดท้าย แล้ว erase()

ตัวอย่างโค้ด

#include <iostream>
#include <set>
using namespace std;

void display(set my_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())) // แนะนำวิธีนี้