Tất tần tật về vector trong C++, cách sử dụng vector để giải quyết các bài toán lập trình. Cách khai báo, sử dụng các hàm có sẵn của vector như sort, insert. Đây là một nội dung khá hay, cùng mình tìm hiểu nhé!
1. Vector C++ là gì?
Vector C++ là một lớp, một cấu trúc dữ liệu có trong thư viện của C++ Standard Template Library dùng để lưu các đối tượng khác giống với mảng (Array). C++ rất mạnh về tính linh hoạt và cấu trúc chính vì thế vector được sinh ra nhằm khắc phục các mặt hạn chế của mảng. Nếu như mảng chỉ có một kích thước cố định khi khai báo thì vector hoàn toàn có thể thay đổi trong khi chương trình đang hoạt động. Tức là một đối tượng vector có thể linh động về kích thước tương tự như con trỏ.
Kích thước không cố định chính là điểm nổi bật nhất của vector. Tuy nhiên không dừng lại ở đó, đối tượng này còn được trang bị thêm khá nhiều phương thức xử lý thông dụng như sort, insert, delete, leght . . . Chính nhờ tính linh hoạt của nó, đôi khi sẽ hữu ích hơn trong việc giải quyết các bài toán lập trình.
Một số ưu điểm nổi trội hoàn toàn so với cấu trúc mảng có thể kể đến:
- Không cần phải khai báo kích thước, vector tự động tăng kích thước ô nhớ giúp tiết kiệm tài nguyên
- Nếu vector đã đầy nó cũng tự động tăng kích thước cho phù hợp.
- Vetor còn có thể tăng kích thước về cả hai chiều của danh sách. Tức là bạn có thể sử dụng các vị trí âm. Ví dụ: a[-1], a[-2] . . .
- Rất thuật tiện cho việc thiết kế và cài đặt các giải thuật.
Xem các bài viết về cấu trúc dữ liệu và thuật toán của mình tại đây nhé!
2. Cách sử dụng vetor C++
Để sử dụng vector trong C++, bạn cần phải khai báo thư viện sau đó khai báo cấu trúc vector cần dùng. Cách khai báo cấu trúc này cũng khá đơn giản. Bạn
Khai báo thư viện: #include
Cú pháp khai báo một vector: vector +
Chúng ta hoàn toàn không cần phải quan tâm đến số lượng phần tử của vector nhé.
Ví dụ:
#include
Ngoài ra bạn cũng có thể khai báo trực tiếp các giá trị cho vector, cụ thể như sau:
vector
Bạn cũng có thể khai báo một vector này bằng một vector khác:
vector
3. Các hàm vector thường sử dụng
Phần này mình sẽ liệt kê một số hàm thường được dùng nhất khi sử dụng cấu trúc vector. Cách sử dụng các hàm, mục đích của chúng dùng để làm gì, cùng tìm hiểu nhé!
3.1 Các hàm tùy chỉnh vị trí duyệt Iterators
Hàm begin trỏ iterators về vị trí bắt đầu của vector: sentayho.com.vnn();(giống với việc đặt i = 0 để duyệt từ đầu mảng, bạn đặt i = sentayho.com.vnn() )
Hàm end trỏ về vị trí cuối cùng của vector: sentayho.com.vn();
Hàm rbegin trỏ về vị trí đảo ngược của begin. (trỏ về vị trí cuối). Tương tự ta cũng có hàm rend đảo ngược vị trí kế thúc.
3.2 Nhóm các hàm chức năng
Hàm size trả về chiều dài của vector: sentayho.com.vn();
Hàm resize giúp cho vector tự động thay đổi kích thước nếu kích thước vượt quá ban đầu. Thu nhỏ nếu kích thước cần chuyển nhỏ hơn.
Hàm capacity trả về dung lượng tổng các ô nhớ của vector: sentayho.com.vncity();
Hàm shrink_to_fit() có tác dụng tự giảm dung lượng, loại bỏ các ô nhớ dư thừa, co vector lại cho vừa khít với bộ nhớ cần dùng. giúp tiết kiệm dung lượng: shrink_to_fit();
empty() là hàm trả về kiểu boolean, kiểm tra xem vector có trống hay không: sentayho.com.vny();
Hàm sort giúp sắp xếp vector một cách nhanh nhất theo chiều tăng dần. Cách dùng: sentayho.com.vn();
Trong các hàm kể trên, hàm sort, size là hai hàm thường được sử dụng nhiều nhất.
3.3 Các hàm tương tác với phần tử
Hàm push_back thêm phần tử ở vị trí cuối cùng: sentayho.com.vn_back();
Hàm pop_back xóa phần tử ở vị trí cuối cùng: sentayho.com.vn_back();
Hàm lấy ra phần tử đầu tiên của vector: vector_name.front();
Hàm lấy ra phần tử cuối cùng của vector: vector_name.back();
Hàm lấy ra phần tử ở vị trí bất kỳ: sentayho.com.vn(
Hàm insert giúp chèn một phần tử vào vị trí bất kì trong vector: vector_name.insert(
Hàm swap giúp đổi chỗ hai phần tử trong vector: vector_name.swap(
Hàm clear xóa bỏ toàn bộ các phần tử có trong vector: vector_name.clear();
Lời kết
Trên đây là toàn bộ nội dung về vector trong C++, mình có tham khảo tài liệu từ sentayho.com.vn. Bạn có thể vào đó để đọc chi tiết hơn nhé.
Vector là một dạng cấu trúc dữ liệu khá đặc biệt của C++, có thể bạn không cần phải sử dụng đến nhiều, nhưng cấu trúc này thực sự hữu ích đối với các bạn hay tìm tòi giải thuật toán. Các bạn thi các cuộc thi lập trình ICPC, HSG QG, ACM, VOI . . .
Cảm ơn bạn đã quan tâm bài viết, xem thêm các bài viết về lập trình cơ bản của mình tại đây nhé!
Chúc bạn thành công!