×

Xóa tất cả phần tử trong vector với std::vector::clear() trong C++

Trong lập trình C++, thư viện chuẩn (Standard Template Library - STL) cung cấp rất nhiều công cụ hữu ích để giúp lập trình viên quản lý và thao tác với dữ liệu một cách hiệu quả. Một trong những cấu trúc dữ liệu được sử dụng phổ biến nhất là std::vector. std::vector cung cấp nhiều phương thức để quản lý các phần tử bên trong nó, và một trong những phương thức quan trọng nhất là clear().

Khái niệm std::vector

std::vector là một lớp đại diện cho mảng động trong C++, tức là kích thước của nó có thể thay đổi trong quá trình thực thi chương trình. Nhờ tính năng này, std::vector cho phép thêm, xóa, truy cập và thay đổi các phần tử một cách linh hoạt.

Phương thức clear()

Phương thức clear() của std::vector được sử dụng để xóa tất cả các phần tử hiện có trong vector, làm cho kích thước (size) của vector trở về 0. Tuy nhiên, cần lưu ý rằng clear() không giải phóng bộ nhớ đã được cấp phát cho vector đó; bộ nhớ có thể vẫn còn được giữ lại để sử dụng cho các phần tử mới được thêm vào sau khi gọi clear().

Cú pháp

vector_name.clear();

Trong đó, vector_name là tên của đối tượng vector cần xóa các phần tử.

Ví dụ cụ thể

Dưới đây là một ví dụ đơn giản minh họa việc sử dụng phương thức clear():

#include <iostream>
#include <vector>

int main() {
    // Khởi tạo một vector chứa các số nguyên
    std::vector<int> numbers = {1, 2, 3, 4, 5};

    // Hiển thị các phần tử trong vector trước khi gọi clear()
    std::cout << "Các phần tử của vector trước khi gọi clear(): ";
    for (int num : numbers) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    // Gọi phương thức clear() để xóa tất cả các phần tử
    numbers.clear();

    // Hiển thị kích thước của vector sau khi gọi clear()
    std::cout << "Kích thước của vector sau khi gọi clear(): " << numbers.size() << std::endl;

    return 0;
}

Trong ví dụ trên:

  1. Chúng ta khởi tạo một vector numbers chứa năm số nguyên.
  2. Phương thức clear() được gọi để xóa tất cả các phần tử trong numbers.
  3. Sau khi gọi clear(), kích thước của vector trở về 0.

Lưu ý khi sử dụng

  • Hiệu quả bộ nhớ: Như đã đề cập, clear() không giải phóng bộ nhớ đã cấp phát. Điều này có nghĩa là khi các phần tử mới được thêm vào, vector sẽ không cần phải cấp phát lại bộ nhớ, giúp tăng hiệu quả thực thi nếu số phần tử mới thêm vào không vượt quá dung lượng đã cấp phát trước đó.
  • Bất khả hồi: Sau khi gọi clear(), các phần tử trong vector sẽ bị xóa bỏ hoàn toàn và không thể phục hồi. Do đó, chỉ sử dụng clear() khi chắc chắn rằng các phần tử hiện tại không còn cần thiết.
  • Thời gian thực thi: Phương thức clear() có thời gian thực thi là O(n), trong đó n là số lượng phần tử trong vector.

Kết luận

Phương thức clear() của std::vector là một công cụ mạnh mẽ, giúp lập trình viên dễ dàng xóa tất cả các phần tử trong một vector mà không cần phải thao tác từng phần tử một. Điều này đặc biệt hữu ích trong các tình huống cần làm trống dữ liệu một cách nhanh chóng và gọn gàng. Tuy nhiên, cần sử dụng clear() một cách cẩn thận và hiểu rõ ảnh hưởng của nó đến bộ nhớ và dữ liệu trong chương trình.

Comments