Thứ Bảy, 26 tháng 12, 2009

// // Leave a Comment

Thư viện Vector

Vector thực ra nó cũng như mảng vậy nhưng cách xài thì linh hoạt hơn

nhiều, và đây là 1 số điểm nổi trội của vector so với mảng :

- Bạn không cần phải khai báo kích thước của mãng ví dụ int A[100]…, vector có thể tự động nâng kíck thước lên.

- Nếu bạn thêm 1 phần tử vào vector đã đầy rồi, thì vector sẽ tự động

tăng kíck thước của nó lên để dành chỗ cho giá trị mới này.- Vector còn

có thể cho bạn biết số lượng các phần tử mà bạn đang lưu trong nó.


Cách dùng vector :


#include <vector>


using namespace std.


Mảng 1 chiều thì khai báo như sau: vector<kiểu_dữ_liệu> tên_mảng. Là vector mà nên bạn không cần khai báo số phần tử mà nó chứa vì nó có thể xin thêm bất kì lúc nào. nếu muốn có thể khai báo : vector<kiểu_dữ_liệu>tên_mảng(số_lượng). Gán giá trị của vector này bằng giá trị của vector khác ví dụ gán giá trị mảng B bằng giá trị của mảng A như sau: vector<int>A ; vector<int >B(A);



Mảng 2 chiều khai báo: vector<vector<kiểu_dữ_liệu>>tên_mảng ví dụ: vector<vector<char>A. Cũng có thể khai báo thêm số lượng nhưng như thế thì để làm gì?!! Ta thao tác với vector 2 chiều này như với mảng hai chiêu thôi. Thư viện vector có hỗ trợ những hàm tiện dụng lắm như sau:



  1. push_back(đối_số); hàm này là thêm vào vector một phần tử chính là đối số đấy. VD: int n; cin>>n; tên_mảng.push_back(n); vector của bạn được khai báo như sau: vector<int>A(3). lúc này trình dịch sẽ cấp phát 3 ô nhớ có liểu int và có giá trị bằng 0 hết, nếu bạn push_back(5) vào thì vector lúc này sẽ có 4 phần tử! Nội dung của vector lúc này: A[0,0,0,5].



  2. pop_back(); hàm này sẽ lấy ra phần tử trên đỉnh vector. tên_mảng.pop_back();

  3. hàm size(); nếu viết tên_mảng.size(); thì nó cho ta thực chất kích thước hiện tại của mảng là bao nhiêu.

  4. hàm capacity() gần giống với size() nhưng nó là cho biết sức chứa thực chất của vector cho dù có bất kì chuyện gì đã xảy ra với vector của nó thì nó cũng trả ra giá trị dung lượng mà vector đã từng được khai báo đầu tiên.


  5. hàm clear(); xoá toàn bộ vector.

  6. tên_mảng.empty()==true thì vector đã khai báo bây giời đang rỗng tếch.

  7. hàm at( i ); hàm này trả về giá trị phần tử thứ “i” của vector.


  8. reserve(n); hàm này tránh cho vector không tự động cấp phát thêm ô nhớ mà chỉ cấp phát thêm dung lượng là n và nó sẽ được cộng thêm vào dung lượng của vector, nếu vector không được sử dụng hết dung lượng n thì vector lúc này sẽ thừa một ít !

  9. swap(); hàm này đổi chỗ của 2 vector. Như sau: vect1.swap(vect2);


  10. hàm resize(dung_lượng, giá_trị) định nghĩa lại vector sẽ có dung lượng bằng dung_lượng và mỗi phần tử có giá trị mới bằng giá_trị.



Ví dụ: chúng ta đã khai báo vector A có 5 phần tử và mỗi phần tử đều bằng 0 như sau:
vector A(5,0);
thì sau đó chúng ta tha hồ làm việc với vector này như thêm ptử, bớt ptử,…làm cho nó có số phần tử tăng lên hay giảm xuống, nội dung trong vector lại bi thay đổi. Cuối cùng chúng ta muốn nó lại như cũ thì dùng hàm này viết như sau: A.resize(5,0). Hoặc sau một hồi làm việc với nó thì ta không cần đến nó nữa nhưng cũng không muốn khai báo thêm vector khác làm gì cho tốn bộ nhớ chúng ta lại có thể tái sử dụng vector này bằng cách dùng hàm resize(); ví dụ bây giờ chúng ta muốn vector A có dung lượng là 10 phần tử và mỗi ptử đều mang giá trị là 1 chẳng hạn. Đơn giản chỉ cần viết như sau: A.resize(10,1);

0 comments: