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
kiểu int
vector
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 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 22 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 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, 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 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.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 Nguyễn Xuân Hùng – Khoa CNTT – ĐH Thủy Lợi 12/18/2014 263. Lớp chuẩn string
Ví dụ khai báo và truy cập xâu:
3. Lớp chuẩn string
Ví dụ đọc xâu từ bàn phím:
3. Lớp chuẩn string
Một số hàm trong xâu:
len): xóa một xâu con có kích
3. Lớp chuẩn string
Một số hàm trong xâu:
str mà
str.find_first_not_of(str1, pos): không trùng với
bất kỳ kí tự nào trong str1
EOF!