Contents
Trong topic array STL C++, kích thước mảng phải là hằng số và khai báo ngay khi khai báo mảng. Việc khai báo mảng tĩnh gây lãng phí memory. STL cung cấp 1 template class là vector để giải quyết vấn đề này. Nguyên tắc hoạt động của vector giống như array, nhưng có thể cấp phát vùng nhớ trong khi run-time.
Cú pháp
vector<object_type> vector_name
object_type : tên kiểu dữ liệu (int, float, class,…)
vector_name: tên vector
Function
Function | Giải thích |
push_back(n) |
|
insert(itr, n) |
|
pop_back( ) |
|
erase( itr) |
|
resize(n, val) |
|
swap( ) |
|
clear( ) |
|
size( ) |
|
empty( ) |
|
capacity( ) |
|
at(i) |
|
front( ) |
|
back( ) |
|
Ví dụ 1: Minh họa hàm push_back()
#include <iostream> #include <vector> using namespace std; void printvect(vector<int> v); int main() { std::vector<int> v; std::vector<int>::iterator i; /* push_back() */ v.push_back(1); v.push_back(2); v.push_back(3); v.push_back(4); cout << "push_back(): "; printvect(v); cout << "size = " << v.size() << ", cap = " << v.capacity() << endl; /* insert(iterator, value) */ i = v.begin(); v.insert(i, 0); cout << "\ninsert(iterator, value): "; printvect(v); cout << "size = " << v.size() << ", cap = " << v.capacity() << endl; /* insert(iterator, count, value)*/ i = v.begin(); v.insert(i, 2, 100); cout << "\ninsert(iterator, count, value): "; printvect(v); cout << "size = " << v.size() << ", cap = " << v.capacity() << endl; /* pop_back() */ v.pop_back(); cout << "\npop_back(): "; printvect(v); cout << "size = " << v.size() << ", cap = " << v.capacity() << endl; /* erase() */ i = v.begin(); v.erase(i); cout << "\nerase(): "; printvect(v); cout << "size = " << v.size() << ", cap = " << v.capacity() << endl; /* resize(n, val) */ v.resize(8, 0); cout << "\nresize(n, val): "; printvect(v); cout << "size = " << v.size() << ", cap = " << v.capacity() << endl; /* swap() */ std::vector<int> v1; v1.swap(v); cout << "\nswap(): "; printvect(v1); if (v.empty()) { cout << "vector v is empty" << endl; cout << "size = " << v.size() << ", cap = " << v.capacity() << endl; } else { cout << "v = "; printvect(v); } /* at(i) */ cout << "at(i) = " << v1.at(4) << endl; /* front & back*/ cout << "\nfront() = " << v1.front(); cout << "\nback() = " << v1.back() << endl; /* clear() */ v1.clear(); cout << "\nclear(): "; if (v1.empty()) { cout << "vector v is empty" << endl; cout << "size = " << v1.size() << ", cap = " << v1.capacity() << endl; } else { cout << "v = "; printvect(v1); } system("pause"); } void printvect(vector<int> v) { for(vector<int>::iterator i = v.begin(); i != v.end(); i++) { cout << *i <<" "; // for printing the vector } cout << endl; }
Kết quả:
Leave a Reply
You must be logged in to post a comment.