Vector C++ là gì?
Để giải quyết một bài toán quản lý danh sách khách hàng hay quản lý một thư viện, trường học, bạn có thể dùng nhiều cách như: sử dụng mảng, sử dụng danh sách liên kết, queue, stack,… Nếu bạn sử dụng các phương pháp thông thường trong 1 bài tập, chuyện này sẽ rất dễ. Tuy nhiên, đối với những bài toán có sự biến động nhiều hơn trong mảng, Vector C++ sẽ là phương pháp thích hợp nhất.
Vector C++ là một mảng có khả năng “động” khá giống với dynamic array. Tuy nhiên, Vector C++ có khả năng tự động thay đổi kích thước nếu một phần tử bị xóa hay được chèn vào thêm. Đồng nghĩa với việc vùng chứa sẽ tự xử lý việc lưu trữ.
Các phần tử Vector C++ sẽ được đặt trong một bộ nhớ liền kề hay contiguous storage và bạn có thể sử dụng iterator để truy cập và duyệt chúng.
Vì sao nên sử dụng Vector C++?
Có rất nhiều lý do bạn đã từng gặp phải trong quá tình lập trình như:
- Bạn không muốn tạo một mảng mới từ đầu, copy thủ công các phần tử sau đó xóa bỏ mảng cũ
- Mỗi lần thay đổi kích thước mảng là bạn phải làm lại từ đầu?
- Bạn cảm giác nhàm chán với việc quản lý mảng động bằng con trỏ C++
Hãy tìm hiểu ngay về Vector C++ để bạn có thể trải nghiệm những sự tuyệt vời như sau:
- Bạn cần mở rộng kích thước mảng? Bạn chỉ cần thêm 1 phần từ Vector vào và chúng sẽ tự động tăng lên.
- Bạn không cần khai báo kích thước của mảng vì Vector có thể tự mở rộng khối lượng, kích thước.
- Bạn có thể nắm rõ được số lượng phần tử đang lưu trong mảng
- Bạn có thể dùng các phần tử số âm trong Vector và sử dụng để cài đặt các giải thuật.
Không chỉ dừng lại ở Vector C++, bạn còn có thể khai thác tối đa sức mạnh của STL – Standard Template Library, một thư viện template của C++. Vì STL là một phần lớn hơn bao gồm cả Vector C++, nên ta chỉ tìm hiểu sơ lược thôi nhé!
Standard Template Library là gì?
Standard Template Library thường được viết tắt là STL. Đây là một tập hợp rất nhiều hàm thường chủ yếu được dùng để lưu trữ và xử lý dữ liệu.
Ta có thể định nghĩa STL là một thư viện của vùng chứa cũng như các thuật toán và vòng lặp. Ngoài ra, STL được phát triển là nhằm để bạn có thể tái sử dụng các mã được viết và kiểm nghiệm sẵn nhằm tiết kiệm thời gian, công sức.
Và Vector C++ là một phần trong Standard Template Library.
Sau khi đọc những lợi ích Vector C++ mang lại, bạn có muốn tìm hiểu về Vector C++ không nào? Nếu có, chúng ta sẽ tiếp tục cùng nhau khám phá nhé!
Tổng hợp các hàm Vector C++
Cách sử dụng Vector trong C++
Cách khai báo một Vector trong C++
Trước tiên, bạn sẽ cần phải khai báo thư viện #includeVector, sau đó bạn mới có thể sử dụng Vector C++ nhé!
Công thức khai báo Vector C++ và ví dụ như sau:
Vector object_type Vector_variable_name;std::Vectorint my_Vector;
Sau khi khai báo xong, bạn cũng có thể gắn giá trị cho Vector_variable_name hay trong ví dụ là my_Vector.
Vectorint my_Vector = {1,3,5,7,9}
Cách khởi tạo Vector trong C++
Chúng ta sẽ có 4 cách để khởi tạo chính bao gồm:
- push_back()
- Sử dụng overload constructor của Vector Class
- Sử dụng Array
- Sử dụng Vector đã khởi tạo sẵn
push_back()
Nếu bạn muốn các phần tử được lưu trữ trong Vector được đẩy lùi về sau từng phần tử một, bạn có thể sử dụng push_back(), câu lệnh như sau:
Vector_name.push_back(element_value);
Sử dụng overload constructor của Vector Class
Trong trường hợp bạn muốn sử dụng một Vector có một cùng 1 giá trị nhiều lần, bạn sử dụng câu lệnh:
Vectorobject_type Vector_name (number_of_repetition,element_value);
Sử dụng Array
Bạn muốn sử dụng một mảng để làm tham số truyền vào Vector? Bạn chỉ cần thực hiện câu lệnh:
- Vectorobject_type Vector_name {val1,val2,val3,....,valn}
Sử dụng Vector đã khởi tạo sẵn
Nếu bạn muốn tái sử dụng một Vector đã được khởi tạo và không gây ảnh hưởng đến giá trị của Vector đó, bạn thực hiện như sau:
Vectorobject_type Vector_name_1{val1,val2,…,valn};Vectorobject_type Vector_name_2(Vector_name_1.begin(),Vector_name_1.end())
Tìm hiểu về các hàm/Functions trong Vector
Modifiers
- push_back(): như trong ví dụ ở trên, hàm này được sử dụng để đẩy một phần tử trong Vector về sau. Nếu kiểu đối tượng được truyền trong tham số không giống với kiểu của Vector thì chúng sẽ bị ném bỏ.
- assign(): ghi đè các giá trị mới bằng cách thay thế giá trị cũ
- pop_back(): sử dụng để làm giảm kích thước của Vector xuống 1 phần tử.
- insert(): sử dụng để chèn phần tử mới trước vị trí được trỏ bởi vòng lặp
- erase(): sử dụng để xóa các phần tử khỏi vòng sp.
- swap(): dùng để hoán đổi giá trị/ nội dung của Vector có cùng kiểu, không nhất thiết cùng kích thước.
- clear(): dùng để loại bỏ các phần tử của vùng chứa Vector
Iterators
- begin(): Được sử dụng để trả về một trình lặp trỏ đến phần tử đầu tiên trong Vector.
- end(): sử dụng để trả về trình lặp đến phần tử cuối cùng trong Vector.
Bạn có thể quan sát ví dụ sau:
#include iostream#include Vectorusing namespace std;int main(){Vectorint vec1;for (int i = 1; i = 10; i++)vec1.push_back(i);cout "Understanding begin() and end() function: " endl;for (auto i = vec1.begin(); i != vec1.end(); ++i)cout *i " ";return 0;}
Kết quả đầu ra chúng ta có là:
Trong ví dụ này, bạn có thể thấy rằng Tino Group sử dụng hàm begin() và end(). Đầu tiên, chúng tôi tạo vec1, sau đó đẩy lùi giá trị các giá trị từ 1 – 10 bằng vòng lặp for. Sau đó, chúng tôi in các giá trị của Vector bằng cách sử dụng vòng lặp for và sử dụng hàm begin() và end() để chỉ định điểm đầu cuối của vòng lặp
Capacity
- size(): hàm này trả về số lượng phần tử trong Vector.
- max_size(): hàm sử dụng để trả về số phần tử tối đa Vector có thể giữ được.
- capacity(): hàm được dùng để trả về kích thước không gian lưu trữ của Vector được cấp bằng đồ thị số.
- resize(): hàm được sử dụng để chứa các phần tử “n”. Nếu kích thước hiện tại của Vector lớn hơn n, các phần tử phía sau n sẽ bị xóa khỏi Vector và ID các phần tử bổ sung sẽ được chèn sau Vector
- empty(): nếu giá trị trả về của hàm là true, Vector của bạn đang trống. Nếu giá trị trả về là false, Vector của bạn không trống.
Qua bài viết này, bạn cũng đã hiểu hơn về Vector C++ là gì rồi đúng không? Có lẽ, Vector C++ khá phức tạp. Tuy nhiên, điều này sẽ giúp bạn dễ dàng quản lý và thực hiện các lệnh của mình hơn nhiều đấy! Tino Group chúc bạn thành công trên con đường lập trình với C/C++!