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
- Xóa phần tử đầu tiên:
pop_front()
luôn xóa phần tử ở đầu std::list. - Giảm kích thước:
pop_front()
làm giảm kích thước của std::list đi 1. - 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 traempty()
trước khi gọipop_front()
. - 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.
- 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). - 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ằngfront()
trước khi xóa. - Độ phức tạp: Độ phức tạp của
pop_front()
là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::vector làO(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_back | Xóa phần tử cuối cùng của std::list |
push_front | Thêm một phần tử mới vào đầu std::list |
erase | Xó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 |