Chuyển tới nội dung chính

std::list::pop_front

#include <list>

void pop_front();

Xóa phần tử đầu tiên của std::list.

Tham số

Không có tham số

Giá trị trả về

Không có giá trị trả về

Đặc điểm

  1. Xóa phần tử đầu tiên: pop_front() luôn xóa phần tử ở đầu std::list.
  2. Giảm kích thước: pop_front() làm giảm kích thước của std::list đi 1.
  3. Hành vi không xác định khi danh sách rỗng: Gọi pop_front() trên một std::list rỗng sẽ dẫn đến hành vi không xác định (undefined behavior). Bạn nên kiểm tra empty() trước khi gọi pop_front().
  4. Không làm thay đổi vị trí tương đối của các phần tử còn lại: Khi xóa phần tử đầu tiên, các phần tử còn lại trong std::list sẽ được dời lên trước, nhưng thứ tự tương đối giữa chúng vẫn được giữ nguyên.
  5. Không ném ngoại lệ: pop_front() không ném ra bất kỳ ngoại lệ nào (trừ khi destructor của phần tử bị xóa ném ngoại lệ, nhưng trường hợp này rất hiếm).
  6. Không trả về giá trị phần tử bị xóa: pop_front() không trả về giá trị của phần tử bị xóa. Nếu bạn cần giá trị đó, hãy truy cập bằng front() trước khi xóa.
  7. Độ phức tạp: Độ phức tạp của pop_front()O(1) - thời gian hằng số. Đây là một trong những ưu điểm chính của std::list so với std::vector (độ phức tạp xóa phần tử đầu của std::vectorO(n)).

Ví dụ

#include <iostream>
#include <list>

int main() {
std::list<int> mylist = {10, 20, 30};

mylist.pop_front(); // Xóa phần tử đầu tiên (10)

std::cout << "mylist:";
for (int x : mylist) {
std::cout << ' ' << x;
}
std::cout << '\n'; // Output: mylist: 20 30

mylist.pop_front(); // Xóa phần tử đầu tiên (20)

std::cout << "mylist:";
for (int x : mylist) {
std::cout << ' ' << x;
}
std::cout << '\n'; // Output: mylist: 30

return 0;
}

Ví dụ về std::list rỗng

#include <iostream>
#include <list>

int main() {
std::list<int> mylist;

if (!mylist.empty()) {
mylist.pop_front();
} else {
std::cout << "Cannot call pop_front() on an empty list!\n"; // Output: Cannot call pop_front() on an empty list!
}

return 0;
}

Các hàm liên quan

pop_backXóa phần tử cuối cùng của std::list
push_frontThêm một phần tử mới vào đầu std::list
eraseXóa một hoặc nhiều phần tử khỏi std::list tại một vị trí cụ thể hoặc trong một phạm vi