Vector trong c++ là một CTDL mảng động (dynamic array), khác với mảng tĩnh thông thường (static array). Điểm khác biệt giữa mảng động và mảng tĩnh là mảng động có thể thay đổi kích thước và số lượng phần tử, mảng tĩnh thì không.
v.begin(), v.end()
: begin trả về iterator (gần giống con trỏ, đọc ở bài Basic pointer and iterator) ở vị trí đầu tiên và end trả về iterator ở sau vị trí cuối cùngv.rbegin(), v.rend()
: trả về reverse iterator (iterator ngược, rbegin sẽ ở vị trí cuối và tăng dần về rend ở trước vị trí đầu tiền)vector<type> name
: khởi tạo một vector trốngvector<type> name(n)
: khởi tạo vector có sẵn n phần tử 0vector<type> name(n, val)
: khởi tạo vector có n phần tử valvector<type> name(first, last)
: khởi tạo vector chứa các phần tử từ trong khoảng iterator [first, last) (từ first tới trước last)v.size()
: trả về độ dài của vectorv[i]
: trả về phần tử vị trí iv.front(), v.back()
: front trả về phần tử đầu tiên (v[0]) và back trả về phần tử cuối cùng (v[v.size()-1])v.empty()
: trả về true nếu vector trống (size = 0), false nếu ngược lạiv.clear()
: xóa mọi phần tử trong vectorv.resize(n)
: thay đổi kích thước của vector thành nv.push_back(val)
: thêm giá trị val vào cuối vectorv.pop_back()
: xóa giá trị ở cuối vectorv.insert(pos, val)
: chèn val vào vị trí iterator posv.insert(pos, n, val)
: chèn n giá trị val vào vị trí posv.insert(pos, first, last)
: chèn các giá trị trong khoảng iterator [first, last) vào vị trí posv.erase(pos)
: xóa phần tử ở iterator posv.erase(first, last)
: xóa các phần từ trong khoảng iterator [first, last)Stack là CTDL LIFO (last in first out), nghĩa là phần tử được thêm vào cuối cùng sẽ được bị xóa đi đầu tiên. Bạn hãy tưởng tượng nó như một chồng sách, khi thêm một quyển sách ta sẽ đặt lên trên cùng, sau đó muốn lấy một quyển sách nào đó ta phải bỏ lần lượt các cuốn ở trên cùng.
stack<type> name
st.size()
: trả về kích thước của stackst.empty()
: trả về true nếu stack trống, false ngược lạist.push(val)
: thêm val vào trên cùng stackst.pop()
: xóa phần tự trên cùng stackst.top()
: trả về phần tử trên cùng stackQueue là CTDL FIFO (first in first out), nghĩa là phần tử được thêm vào đầu tiên sẽ được bị xóa đi đầu tiên. Bạn hãy tưởng tượng nó như một hàng người xếp hàng, khi đó người nào đứng đầu (vào trong hàng trước) sẽ được phục vụ và rời đi trước.
queue<type> name
qu.size()
: trả về kích thước của queuequ.empty()
: trả về true nếu queue trống, false ngược lạiqu.push(val)
: thêm val vào sau cùng queuequ.pop()
: xóa phần tự đầu tiên của queuequ.front(), qu.back()
: trả về phần tử đầu tiên và cuối cùng của queueSet đơn giản chỉ là một CTDL chỉ chứa các phần tử riêng biệt. Ngoài ra, các phần tử của set sẽ tự động được sắp xếp (mặc định là tăng dần). Multiset có cách dùng tương tự set nhưng có thể chứa các phần tử giống nhau (vẫn đảm bảo sắp xếp).
s.begin(), s.end()
: trả về iterator ở phần tử đầu set và sau cuối sets.rbegin(), s.rend()
: trả về reverse iterator ở phần tử cuối set và trước đầu setset<type> name
: khởi tạo một set rỗng
s.size()
: trả về độ dài của sets.empty()
: trả về true nếu set trống, false ngược lạis.clear()
: xóa mọi phần tử của sets.insert(val)
: thêm val vào set (tự động đảm bảo thứ tự các phần tử được sắp xếp)s.erase(val)
: xóa val khỏi sets.find(val)
: trả về iterator của val trong set, hoặc nếu val không có trong set thì trả về s.end()Example:
Map là CTDL chứa giá trị theo cặp <key, value>. Các cặp <key, value> trong map thực chất là các pair, và được sắp xếp mặc định theo key tăng dần.
pair chỉ là một kiểu chứa 2 giá trị first và second: pair<first_type, second_type>
m.begin(), m.end()
: trả về iterator ở phần tử đầu map và sau cuối mapm.rbegin(), m.rend()
: trả về reverse iterator ở phần tử cuối map và trước đầu mapmap<key_type, value_type> m
: khởi tạo một map trống
m.size()
: trả về độ dài mapm[val]
: trả về value theo key x (với x thuộc kiểu key_type), nếu m[val] chưa tồn tại thì map sẽ tự tạom.empty()
: trả về true nếu map trống, false ngượcm.clear()
: xóa mọi phần tử của mapm.erase(val)
: xóa cặp <key, value> có key là valm.find(val)
: trả về iterator ở vị trí của cặp <key, val> có key là val tìm được, nếu không có trả về end()