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

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

  1. Giảm kích thước của vector (size) đi 1.
  2. Không ảnh hưởng đến dung lượng (capacity) của vector.
  3. 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).
  4. 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().
  5. 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ố).
  6. Ứ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).
  7. 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().
  8. 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_backThêm một phần tử vào cuối vector
eraseXóa một hoặc nhiều phần tử khỏi vector