Thư viện Vector

Gió cũng đang học mà, nên post những gì mình lĩnh hội được từ sách vở, từ người khác. Đólà niềm vui nhỏ nhoi có thể chia sẻ được. Hôm nay biết thêm một chút về thư viện VECTOR một điều vô cùng bổ ích và thú vị !!!!!!!!

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á 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. Hơi hoài niệm nhỉ !!!
  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ị.

7 thoughts on “Thư viện Vector

  1. chào bạn !
    Mình mới học lập trình nên còn mơ hồ lắm, mong bạn giúp mình với nha!
    Doc bai viet trên mình không hiễu chỗ: ” 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ị. ”
    Bạn có thể giúp mình giải thích thêm và cho mình một ví dụ cụ thể nha.
    Cảm ơn bạn nhiều!

  2. hi`. Rất vui được giúp bạn. Theo sự hiểu biết của Gió thì hàm này là để định nghĩa lại cái vector mà đã được khai báo và sử dụng trước đó rồi. 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); Ok chưa? Bạn có thể tự viết một chương trình, nếu có vấn đề gì thì nói với Gió.
    Nếu bạn mới học lập trình chắc không được sử dụng hàm vector này đâu bởi vì cần làm việc với mảng hay stack để nhằm hiểu rõ cách làm việc của máy tình, chỉ khi nào bạn đi làm lập trình rồi thì người ta mới khuyến khích bạn dùng thư viện này cho nhanh thôi. Nhưng biết thêm cũng thú vị lắm phải không?!

  3. Bài viết rất hay .. hiểu thêm được đôi chút kiến thức và tiện lợi hơn khi xây dựng ma trận nhiều chiều . Thanx bạn !

  4. bài viết rất hay nhưng mình vẫn không biết sử dụng vector thế nào, khi chuyển 1 bài dùng mảng đơn giản sang dùng vector mà loay hoay mãi không làm được, chạy mà cứ lỗi hoài, hic hic, bạn có thể demo 1 bài chuyển từ mảng sang không, mình muốn xem 1 bài mẫu để khi sử dụng nó sẽ dễ hơn, Thanks bạn nhìu🙂

  5. hì, bạn không hỉu ah, vector cũng như là 1 cái mảng đúng không. hic, vậy bạn giúp mình demo bài liệt kê xâu nhị phân kế tiếp dùng vector đc ko . Thanks

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s