Trong lĩnh vực lập trình, việc làm việc với mảng động là một nhiệm vụ quan trọng. Đối với các nhà phát triển C++, std::vector là một công cụ mạnh mẽ để giải quyết vấn đề này. Trên cơ bản, std::vector giúp bạn tạo và quản lý mảng động một cách an toàn và dễ dàng hơn.
Tổng quan về lớp std::vector
Trước khi khám phá chi tiết về std::vector, chúng ta cần hiểu rõ khái niệm về mảng động. Một mảng động là một dãy các phần tử có thể thay đổi kích thước và được cấp phát/giải phóng bộ nhớ một cách tự động.
Trong C++, std::vector là một lớp dùng để tạo mảng động. Với std::vector, bạn có thể tạo và sử dụng một mảng động mà không cần phải quản lý việc cấp phát và giải phóng bộ nhớ bằng cách sử dụng các toán tử new và delete.
Để sử dụng std::vector, bạn cần đầu tiên khai báo thư viện và namespace:
#include
using namespace std;
Sau đó, bạn có thể khởi tạo một std::vector và truy cập vào các phần tử trong mảng bằng cách sử dụng toán tử [] hoặc hàm at():
vector array;
array = { 0, 1, 2, 3, 4 };
array[1] = 5; // truy cập phần tử bằng toán tử []
array.at(2) = 7; // truy cập phần tử bằng hàm at()
Cơ chế ngăn chặn rò rỉ bộ nhớ của std::vector
Một trong những lợi ích lớn của việc sử dụng std::vector là ngăn chặn rò rỉ bộ nhớ. Khi một biến std::vector ra khỏi phạm vi, nó sẽ tự động giải phóng bộ nhớ mà nó đang nắm giữ. Điều này không chỉ tiện lợi mà còn giúp ngăn ngừa rò rỉ bộ nhớ.
Một số thao tác với std::vector
Trong việc làm việc với std::vector, có một số thao tác quan trọng mà bạn cần biết.
Xem kích thước của std::vector
Để xem kích thước của một std::vector, bạn có thể sử dụng hàm size():
vector arr = { 2, 5, 8, 3, 1 };
cout << arr.size() << endl;
Output: 5
Thay đổi kích thước của std::vector
Để thay đổi kích thước của một std::vector, bạn có thể sử dụng hàm resize(). Ví dụ:
vector array{ 2, 5, 8, 3, 1 };
array.resize(10); // thay đổi độ dài mảng thành 10 phần tử
Dung lượng và kích thước của std::vector
Khác với mảng thông thường hoặc std::array, std::vector chứa hai thuộc tính riêng biệt: kích thước (size) và dung lượng (capacity).
- Kích thước (size) trả về số lượng phần tử đang được sử dụng trong mảng.
- Dung lượng (capacity) trả về số lượng phần tử được cấp phát cho vector trong bộ nhớ.
Ví dụ:
vector array;
array = { 0, 1, 2, 3, 4 }; // size = 5, capacity = 5
array = { 9, 8, 7 }; // size = 3, capacity = 5
Hành vi ngăn xếp trên std::vector
Mặc dù std::vector được sử dụng như một mảng động, nhưng nó cũng có thể được sử dụng như một ngăn xếp. std::vector cung cấp ba phương thức quan trọng để làm việc với ngăn xếp:
- push_back(): thêm một phần tử vào cuối vector.
- back(): trả về giá trị của phần tử cuối vector.
- pop_back(): xóa một phần tử cuối vector.
Ví dụ:
vector stack;
stack.push_back(5); // thêm một phần tử vào cuối vector
stack.push_back(3);
stack.push_back(2);
stack.back(); // trả về giá trị của phần tử cuối vector
stack.pop_back(); // xóa một phần tử cuối vector
Kết luận
Trên đây là những kiến thức cơ bản về std::vector trong C++. Với những tính năng và lợi ích mà std::vector mang lại, nó là công cụ hữu ích cho việc làm việc với mảng động trong hầu hết các trường hợp.
Ở bài viết tiếp theo, chúng ta sẽ cùng tìm hiểu về cách truyền địa chỉ cho hàm trong C++. Hãy tiếp tục theo dõi nhé!
Nếu bạn có bất kỳ câu hỏi hoặc ý kiến nào về bài viết, hãy để lại bình luận để chúng ta cùng thảo luận và phát triển bài viết tốt hơn. Chúng ta cũng có thể chia sẻ kinh nghiệm và giúp đỡ nhau trong quá trình học tập và làm việc.
Cảm ơn bạn đã theo dõi bài viết và hãy tiếp tục khám phá thêm nhiều kiến thức mới nhé!