NGÔN NGỮ LẬP TRÌNH

Bài 9. Thư viện chuẩn (Standard Template Library)

Giảng viên: Nguyễn Xuân Hùng Mobile: 0908 386 366 Email: nguyenxuanhung@wru.vn

Nguyễn Xuân Hùng – Khoa CNTT – Trường Đại học Thủy Lợi

NỘI DUNG 1. Cơ bản về Vector 2. Cơ bản về String

Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 2

1. Cơ bản về vector  Mục đích: khi sử dụng với tập các phần tử có cùng

kiểu

 Khái niệm: là một kiểu dữ liệu giống mảng nhưng nó có thể phình to hoặc thu nhỏ kích thước khi chương trình đang chạy.

 Nhược điểm của mảng:

 Kích thước khai báo là cố định  Không thuận tiện trong việc truyền tham số kiểu mảng

trong hàm và trả về kiểu mảng.

 Sử dụng vượt chỉ số mảng, C++ không thông báo lỗi 

dẫn tới tác động dây truyền.

 Vector là một container cung cấp khả năng sử dụng mảng mềm dẻo, có kiểm soát miền khi cần thiết với kích thước tùy ý.

Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 3

1. Cơ bản về vector  Khai báo:

 Khai báo thư viện:  Khai báo sử dụng:

 vector a;  Khai báo một vector a có kiểu int  vector a(10); Khai báo một vector a có 10 phần tử

kiểu int

 vector a(10, 2);  khai báo một vector a có 10 phần tử

kiểu int được khởi tạo bằng 2.

Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 4

1. Cơ bản về vector  Các phương thức hỗ trợ bởi lớp vector

Phương thức

Ngữ nghĩa

v.assign(n, e) v[i] hoặc v.at(i) v.clear() v.pop_back() v.push_back(e) v.resize(newsSize)

Thay thế nội dung của v bằng n bản sao của e Tham chiếu đến phần tử thứ i của vector v Làm rỗng vector v Xóa phần tử cuối cùng của vector v Ghép thêm phần tử e vào cuối vector v Đổi cỡ của vector v thành newSize

Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 5

1. Cơ bản về vector  Ví dụ:

Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 6

1. Cơ bản về vector  Thay đổi kích thước của vector: dùng hàm

resize();

 Ví dụ:

Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 7

1. Cơ bản về vector  Thêm phần tử và lấy phần tử ra khỏi vector: dùng

push_bach(item) và pop_back();

 Ví dụ:

Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 8

1. Cơ bản về vector  Xóa tại vị trí bất kỳ, xóa trắng: dùng phương thức

earse(i) và clear()

Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 9

1. Cơ bản về vector  Phương thức chèn phần tử: dùng insert() như

sau:

Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 10

1. Cơ bản về vector  Phương thức tham chiếu tới phần tử đầu vào

cuối: front(), back();

Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 11

1. Cơ bản về vector  Phương thức kiểm tra xem vector rỗng hay

không? sử dụng: empty();

 Phương thức kiểm tra số lượng tối đa mà vector

được cấp phát: capacity();

Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 12

1. Cơ bản về vector  Phương thức cấp phát vùng nhớ cho vector:

reserve()  hạn chế vector tự cấp phát vùng nhớ không cần thiết.

 Hoán đổi 2 vector với nhau: v1.swap(v2)  đổi

giá trị của v1 cho v2 và ngược lại.

Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 13

1. Cơ bản về vector  Mảng 2 chiều với vector:

Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 14

1. Cơ bản về vector  Sử dụng iterator: là bộ lặp hay biến lặp cùng với

các container (thùng chứa) như: mảng, list, vector…

 Một số phương thức liên quan tới container

Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 15

1. Cơ bản về vector  Truy cập tới các phần tử của một container bằng

sử dụng một iterator

 Ví dụ:

Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 16

2. Cơ bản về C-string  Kiểu mảng để biểu diễn xâu:

 Một biến C-string chỉ là một mảng các ký tự.  Khai báo một biến C-string

 Ví dụ:

 char myCstring[11];  biến myCstring có thể chứa một C- string có ít hơn hoặc bằng 10 ký tự. Ký tự thứ 11 là ký tự kết thúc một C-string.  Khởi tạo một C-string:

 char myCstring[11] = “Hi there.”;  char shortString[ ] = “abc”;

Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 17

2. Cơ bản về C-string  Thư viên C-string: cung cấp các hàm được xây dựng sẵn. Khai báo thư viên #include

Hàm

Mô tả

strcpy(target, source)

Sao chép giá trị source vào target

strcpy(target, source, limit)

Sao chép limit giá trị source vào target.

strcat(target, source)

Nối giá trị source vào đuôi target

strncat(target, source, limit)

Nối limit giá trị vào đuôi target

strlen(source)

Trả về chiều dài của source, không tính ‘\0’

strcmp(s1, s2)

Trả về 0 nếu s1 giống s2, nhỏ hơn 0 nếu s1 < s2 và lớn hơn 0 khi s1 > s2

strncmp(s1, s2, limit)

Tương tự strcmp nhưng hạn chế kí tự so sánh

Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 18

2. Cơ bản về C-string  Xuất nhập với C-string: sử dụng getline()  Ví dụ:

 Các hàm thành viên:

 putback(): nhận một đối số kiểu char, nó sẽ đưa giá

trị của đối số ngược trả lại luồng nhập.

 peek(): trả về kí tự được đọc tiếp theo bởi cin,

nhưng không sử dụng ký tự đó.

 ignore(): bỏ qua việc nhập cho đến một ký tự được

chỉ rõ.  Ví dụ: cin.ignore(1000,’\n’);  nếu ký tự ‘\n’ không xuất hiện

thì 1000 ký tự bị bỏ qua.

Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 19

2. Cơ bản về C-string  Một số hàm với ký tự:

Mô tả

Hàm

trả về ký tự hoa của c

toupper(c)

trả về ký tự thường của c

tolower(c)

trả về true nếu c là ký tự hoa

isupper(c)

trả về true nếu c là ký tự thường

islower(c)

trả về true nếu c là chữ cái

isalpha(c)

trả về true nếu c là số

isdigit(c)

trả về true nếu c là dấu cách

isspace(c)

trả về true nếu c là chữ cái hoặc số

isalnum(c)

ispunct(c)

trả về true nếu c là một ký tự in được khác ký tự trắng, chữ số hoặc chữ cái

isgraph(c)

trả về true nếu c là một ký tự in được mà khác ký tự trắng

isctrl(c)

trả về true nếu c là một ký tự điều khiển

Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 20

3. Lớp chuẩn string  Lớp string được định nghĩa sẵn trong thư viện

, và đặt trong không gian tên std;

 Khai báo:

 string s1, s2;  s1 = “hello world”;  string s3(“hello”);

 Xuất nhập với string: sử dụng getline(cin, s1) để

đọc một chuỗi vào biến s1.

 Truy cập từng phần tử:

 cout<

Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 21

3. Lớp chuẩn string  Ví dụ khai báo và truy cập xâu:

Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 22

3. Lớp chuẩn string  Ví dụ đọc xâu từ bàn phím:

 Chèn một xâu con vào xâu:

Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 23

3. Lớp chuẩn string  Một số hàm trong xâu:

 str.substr(pos, len): trả về một xâu con trong xâu

str, từ vị trí pos và có độ dài là len

 str.empty(): trả về true nếu str là rỗng  str.insert(pos, str2): chèn str2 vào xâu str từ vị trí

pos.

 str.remove(pos,

len): xóa một xâu con có kích

thức len từ vị trí pos

 str.find(str1): trả về vị trí xuất hiện đầu tiên của

str1 trong str

Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 24

3. Lớp chuẩn string  Một số hàm trong xâu:

 str.find(str1, pos): trả về vị trí tìm thấy trong str từ

vị trí pos

 str.find_first_of(str1, pos): trả về ví trí xuất hiện

đầu tiên của str1 trong str, bắt đầu từ pos

 trả

vị

về

đầu

tiên

của

trí

str mà str.find_first_not_of(str1, pos): không trùng với bất kỳ kí tự nào trong str1

 str.erase(pos, n): xóa n ky tự từ vị trí pos của xâu

str

 str.rfind(str1): trả về trị trí xuất hiện xâu con str1

trong xâu str theo chiều ngược lại.

 str.replace(pos, n, str): thay thế n ký tự từ vị trí

pos trong xâu str bằng str1.

Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 25

EOF!

Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 26