Giảng viên: Nguyễn Xuân Hùng
Mobile: 0908 386 366
Email: 
[email protected]
Bài 9. Thư viện chuẩn
(Standard Template Library)
NGÔN NGỮ LẬP TRÌNH
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
12/18/20142 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
1. Cơ bản về vector
12/18/20143 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
 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 ý.
1. Cơ bản về vector
12/18/20144 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
 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.
1. Cơ bản về vector
12/18/20145 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
 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
1. Cơ bản về vector
12/18/20146 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
 Ví dụ:
1. Cơ bản về vector
12/18/20147 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
 Thay đổi kích thước của vector: dùng hàm 
resize();
 Ví dụ:
1. Cơ bản về vector
12/18/20148 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
 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ụ:
 Xóa tại vị trí bất kỳ, xóa trắng: dùng phương thức 
earse(i) và clear()
1. Cơ bản về vector
12/18/20149 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
 Phương thức chèn phần tử: dùng insert() như 
sau:
1. Cơ bản về vector
12/18/201410 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
 Phương thức tham chiếu tới phần tử đầu vào 
cuối: front(), back();
1. Cơ bản về vector
12/18/201411 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
 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();
1. Cơ bản về vector
12/18/201412 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
 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.
1. Cơ bản về vector
12/18/201413 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
 Mảng 2 chiều với vector: 
1. Cơ bản về vector
12/18/201414 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
 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
1. Cơ bản về vector
12/18/201415 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
 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ụ:
1. Cơ bản về vector
12/18/201416 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
 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”; 
2. Cơ bản về C-string
12/18/201417 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
 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
2. Cơ bản về C-string
12/18/201418 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
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
strncmp(s1, s2, limit) Tương tự strcmp nhưng hạn chế kí tự so 
sánh
 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.
2. Cơ bản về C-string
12/18/201419 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
 Một số hàm với ký tự:
2. Cơ bản về C-string
12/18/201420 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
Hàm Mô tả
toupper(c) trả về ký tự hoa của c
tolower(c) trả về ký tự thường của c
isupper(c) trả về true nếu c là ký tự hoa
islower(c) trả về true nếu c là ký tự thường
isalpha(c) trả về true nếu c là chữ cái
isdigit(c) trả về true nếu c là số
isspace(c) trả về true nếu c là dấu cách
isalnum(c) trả về true nếu c là chữ cái hoặc số
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
 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<<s1[0];  h
 cout<<s1[6];  w
3. Lớp chuẩn string
12/18/201421 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
 Ví dụ khai báo và truy cập xâu:
3. Lớp chuẩn string
12/18/201422 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
 Ví dụ đọc xâu từ bàn phím:
 Chèn một xâu con vào xâu:
3. Lớp chuẩn string
12/18/201423 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
 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
3. Lớp chuẩn string
12/18/201424 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
 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ị trí đầu tiên của 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.
3. Lớp chuẩn string
12/18/201425 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi
EOF!
12/18/2014Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi26