vector là một kiểu cấu trúc dữ liệu được xây dựng sẵn trong C++ được dùng để lưu trữ và có chức năng tương tự như mảng. Tuy nhiên vector có một số ưu điểm sau:
- Cấp phát động và không giới hạn về số lượng phần tử.
- Có các phương thức (hàm) hỗ trợ như : lấy số lượng phần tử , chèn, xóa phần tử …
Ví dụ : sử dụng một vector có các phần tử kiểu int
Ghi chú : Để thêm phần tử vào vector ta dùng phương thức push_back(value) . Để truy xuất ta dùng hình thức tương tự như mảng một chiều myVector[index]
Để tiện học tập và tra cứu, mỗi hàm mình viết thành một bài riêng .Các bạn chịu khó ấn vào tên hàm tương ứng để xem hướng dẫn
)
Cách khai báo vector : Khai báo vector 
Các hàm truy cập giá trị các phần tử của vector:
Toán tử [ ] | Truy cập trực tiếp các phần tử vector thông qua toán tử [ ] |
front | Trả về giá trị của phần tử đầu tiên trong của vector |
back | Trả về giá trị của phần tử cuối cùng trong của vector |
Các hàm truy cập địa chỉ các phần tử của vector:
iterator | Truy cập các phần tử của vector thông qua địa chỉ |
begin | Truy cập địa chỉ của phần tử đầu tiên của vector |
end | Truy cập địa chỉ của phần tử đầu tiên của vector |
Các hàm thay đổi các phần tử của vector:
push_back | Thêm một phần tử vào cuối dãy của vector |
pop_back | Loại bỏ một phần tử ở cuối dãy ra khỏi vector |
insert | Thêm một hay nhiều phần tử vào vector ở vị trí bất kì |
erase | Xóa một hay nhiều phần tử ra khỏi vector ở vị trí bất kì |
Các hàm lấy các thuộc tính của vector:
size | trả về số phần tử trong mảng |
empty | Trả về giá trị true nếu vector không có phần tử nào |
push_back(value) có chức năng thêm một phần tử vào cuối vector . Ví dụ: dãy hiện tai tại là {1,2,3,4}, khi thêm vào cuối dãy thì ta được {1,2,3,4,5}
push_back(value) là phương thức dùng đề gán một giá trị vào vector, điểm này khác so với mảng. Cụ thể, ta không thể thực hiện gán giá trị trực tiếp vào các phần tử của vector vì ban đầu ta vẫn chưa tạo vùng nhớ cho các phần tử của vector. Do đó, ta cần dúng phương thức push_back(value) để cấp phát vùng nhớ và gán giá trị vào vùng nhớ.
Đoạn code sau khi Bulid sẽ không phát hiện lỗi nhưng khi Run sẽ có lỗi “truy cập vào vùng nhớ không tồn tại” :
Đoạn code bên dưới đã sửa lại lỗi phía trên, đồng thời dùng hàm push_back(value) để thêm một phần từ có giá trị 10 và dãy {0,1,2,3,4,5,6,7,8,9}
Tham khảo các hàm hữu ích khác của vector 
std::vector::front
Hình thức: int front() , string front() , double front() ….
Chức năng: Trả về giá trị đầu tiên của phần tử trong vector
Ví dụ:
std::vector::insert
Hình thức và chức năng của hàm insert :
void insert( iterator index, datatype value) : thêm 1 phần tử có giá trị value vào vị trí index.
void insert( iterator index, int n , datatype value) : thêm n phần tử có giá trị value vào vị trí index.
Lưu ý: ví trí index ở đây là một iterator (tham khảo thêm về iterator)
Ví dụ:
output:
Cac phan tu sau khi insert: 100 200 200 |
std::vector::erase
Hình thức:
void erase (iterator position) : xóa một phần tử ở vị postion.
void erase (iterator first , iterator last) : xóa các phần tử liên tiếp từ vị trí first đến vị trí liền trước với last .
Lưu ý: Hàm erase có tham số là các biến địa chỉ iterator ( kham thảo thêm vềiteratior)
Ví dụ:
Output:
100 400 500 600 700 800 900 |
std::vector::iterator
iterator được hiểu như là một kiểu đia chỉ bộ nhớ, thay vì truy xuất các phần tử vector thông qua chỉ số 0,1,2… ta có thể truy xuất thông qua các địa chỉ vùng nhớ của các phần tử này.
Hình thức: ví dụ khai báo một iterator có tên là it cho một vector kiểu int : vector<int> :: iterator it;
Ví dụ:
STD::VECTOR::BEGIN
Hình thức: iterator begin()
Chức năng: trả về iterator (địa chỉ) của phần tử đầu tiên trong vector.
Ví dụ:
Output:
1 2 3 4 5 |
No comments:
Post a Comment