std::vector::pop_back
#include <vector>
void pop_back();
Xóa phần tử cuối cùng của vector.
Tham số
Không có tham số
Giá trị trả về
Không có giá trị trả về
Đặc điểm
- Giảm kích thước của vector (
size
) đi 1. - Không ảnh hưởng đến dung lượng (capacity) của vector.
- vector không được rỗng; nếu vector rỗng, gọi
pop_back()
dẫn đến hành vi không xác định (undefined behavior). - Hàm không trả về phần tử đã loại bỏ, do đó nếu cần giá trị đó, bạn phải lưu trữ nó trước khi gọi
pop_back()
. - Hàm này không ném ngoại lệ và thường là thao tác
O(1)
(độ phức tạp thời gian hằng số). - Ứng dụng
- Quản lý kích thước vector động trong quá trình lập trình.
- Loại bỏ phần tử cuối cùng khi xử lý dữ liệu dạng stack (ngăn xếp).
- Phần tử bị xóa không còn được quản lý bởi vector, nhưng nếu là con trỏ hoặc tài nguyên đặc biệt, cần giải phóng nó trước khi gọi
pop_back()
. - Nếu vector sử dụng các đối tượng có destructor, việc xóa phần tử cuối cùng sẽ tự động gọi destructor của đối tượng đó.
Ví dụ
#include <iostream>
#include <vector>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
std::cout << "Before pop_back(): ";
for (int num : numbers) {
std::cout << num << " ";
}
std::cout << "\n";
numbers.pop_back(); // Xóa phần tử cuối cùng
std::cout << "After pop_back(): ";
for (int num : numbers) {
std::cout << num << " ";
}
std::cout << "\n";
return 0;
}
Gọi pop_back()
khi vector rỗng (undefined behavior)
#include <iostream>
#include <vector>
int main() {
std::vector<int> empty_vector;
// Gọi pop_back() trên vector rỗng sẽ gây lỗi undefined behavior
empty_vector.pop_back();
return 0;
}
Để tránh undefined behavior, luôn kiểm tra vector có rỗng hay không
if (!vector_name.empty()) {
vector_name.pop_back();
} else {
std::cout << "Vector is empty. Cannot call pop_back().\n";
}
Các hàm liên quan
push_back | Thêm một phần tử vào cuối vector |
erase | Xóa một hoặc nhiều phần tử khỏi vector |