Vector trong C++ là gì? Tổng hợp các hàm vector trong C++ và cách sử dụng
Thịnh Văn Hạnh
06/01/2026
2306 Lượt xem
Chia sẻ bài viết
Bạn đã bao giờ gặp tình huống “dở khóc dở cười” khi lập trình: Bạn khai báo một mảng có 50 phần tử, nhưng dữ liệu nhập vào lại lên tới 51? Lúc này, bạn buộc phải sửa code, tăng kích thước mảng và biên dịch lại từ đầu. Ngược lại, nếu bạn khai báo dư thừa để “trừ hao”, chương trình lại tiêu tốn bộ nhớ RAM vô ích.
Đó chính là hạn chế lớn nhất của mảng tĩnh (static array) truyền thống: kích thước cố định và thiếu sự linh hoạt. Trong các dự án thực tế, nơi dữ liệu luôn biến động, chúng ta cần một giải pháp thông minh hơn. Đặc biệt khi chạy ứng dụng C++ trên cloud server, lượng dữ liệu/khối lượng xử lý có thể tăng giảm theo thời điểm, nên một cấu trúc tự co giãn như std::vector sẽ giúp bạn tránh phải “đoán trước” kích thước và sửa code liên tục.
Đây chính là lúc std::vector trong C++ toả sáng.
Được mệnh danh là “mảng động” (dynamic array), Vector là một trong những container mạnh mẽ và phổ biến nhất trong Thư viện Mẫu Chuẩn (STL). Nó khắc phục hoàn toàn nhược điểm của mảng thường bằng cách tự động quản lý và thay đổi kích thước bộ nhớ dựa trên nhu cầu sử dụng thực tế của bạn.
Tóm Tắt Bài Viết
Vector trong C++ là gì?
Về mặt kỹ thuật, std::vector là một sequence container (container tuần tự) nằm trong thư viện chuẩn STL (Standard Template Library).
Tuy nhiên, để dễ hình dung, bạn hãy hiểu đơn giản: Vector là một mảng động (Dynamic Array).
Khác với mảng tĩnh (Static Array) – nơi bạn phải xây một “căn nhà” cố định kích thước ngay từ đầu, Vector giống như một đoàn tàu: bạn có thể nối thêm toa (thêm phần tử) hoặc tháo bớt toa (xóa phần tử) bất kỳ lúc nào tùy vào lượng hành khách (dữ liệu) thực tế.

Dưới đây là một ví dụ cơ bản về việc sử dụng “vector” trong C++:
#include <iostream>
#include <vector>
int main() {
std::vector<int> myVector;
//Thêm các phần tử vào vector
myVector.push_back(10);
myVector.push_back(20);
myVector.push_back(30);
// Truy cập các phần tử trong vector
std::cout << "Phan tu thu 2: " << myVector[1] << std::endl;
return 0;
}
Trong ví dụ trên, chúng ta sử dụng “vector” để lưu trữ các số nguyên và thực hiện việc thêm phần tử vào vector, sau đó truy cập và in ra phần tử thứ hai (chỉ số 1) trong vector.
Vì sao nên sử dụng Vector C++?

Sử dụng vector trong C++, những nhà phát triển không còn cần thực hiện những công việc lặp đi lặp lại, phiền toái khi làm việc với mảng so với cách truyền thống. Dưới đây là một số lợi ích của việc sử dụng vector trong C++ so với việc sử dụng mảng thông thường:
- Không cần khai báo kích thước ban đầu cho mảng, bởi vector có khả năng tự động thay đổi kích thước (resize) theo nhu cầu.
- Vector tự động điều chỉnh kích thước để chứa phần tử mới khi nó đã đạt tới giới hạn lưu trữ.
- Cho phép theo dõi số lượng phần tử đang được lưu trữ trong vector.
- Hỗ trợ truy cập bằng chỉ số âm (như A[-6], A[-5], …) mở ra khả năng sử dụng chỉ số âm hữu ích trong việc truy cập phần tử.
Các Vector được lưu trữ trong C++ như thế nào?
Trong những phần còn lại của bài viết, ta sẽ tìm hiểu cách sử dụng thư viện vector trong C++. Trước hết, để tạo một vector, ta cần sử dụng cú pháp như dưới đây:
vector <object_type> variable_name;
Ví dụ:
#include <vector>
int main()
{
std::vector<int> my_vector;
}
Ví dụ trên đã tạo một vector trống. Vector là mảng động nên không cần phải khai báo kích thước.
Tổng hợp các hàm Vector trong C++ và cách sử dụng
Một vector container trong STL cung cấp nhiều hàm vô cùng hữu ích, trong đó có 3 hàm cơ bản là:
- Modifider.
- Iterator.
- Capacity.
Modifier
- push_back(): Đẩy phần tử vào vị trí cuối của vector. Nếu kiểu đối tượng được truyền dưới dạng tham số trong push_back() không giống với kiểu vector thì sẽ trả về Exception.
- assign(): Gán giá trị mới vào các phần tử.
- pop_back(): Dùng để pop hoặc xoá phần tử ở cuối vector, đồng thời giảm kích thước của vector đi 1 đơn vị.
- insert(): Chèn phần tử mới vào phía trước phần tử trước vị trí trỏ của iterator. Ngoài ra ta cũng có thể thêm đối số count để đếm số lần chèn phần tử.
- erase(): Xoá phần tử khỏi container dựa trên vị trí hoặc phạm vi nhất định. Người dùng có thể truyền vị trí của phần tử cần xoá hoặc truyền phạm vi của phần tử.
- swap(): Dùng để hoán đổi nội dung của một vetor với vector khác có cùng kiểu (kích thước có thể khác nhau).
- clear(): Xoá mọi phần tử của vector container.
Ví dụ:
// Modifiers in vector
#include <bits/stdc++.h>
#include <vector>
using namespace std;
int main()
{
// Assign vector
vector<int> vec;
// fill the array with 12 seven times
vec.assign(7, 12);
cout << "The vector elements are: ";
for (int i = 0; i < 7; i++)
cout << vec[i] << " ";
// inserts 24 to the last position
vec.push_back(24);
int s = vec.size();
cout << "nThe last element is: " << vec[s - 1];
// prints the vector
cout << "nThe vector elements after push back are: ";
for (int i = 0; i < vec.size(); i++)
cout << vec[i] << " ";
// removes last element
vec.pop_back();
// prints the vector
cout << "nThe vector elements after pop_back are: ";
for (int i = 0; i < vec.size(); i++)
cout << vec[i] << " ";
// inserts 10 at the beginning
vec.insert(vec.begin(), 10);
cout << "nThe first element after insert command is: " << vec[0];
// removes the first element
vec.erase(vec.begin());
cout << "nThe first element after erase command is: " << vec[0];
// inserts at the beginning
vec.emplace(vec.begin(), 5);
cout << "nThe first element emplace is: " << vec[0];
// Inserts 20 at the end
vec.emplace_back(20);
s = vec.size();
cout << "nThe last element after emplace_back is: " << vec[s - 1];
// erases the vector
vec.clear();
cout << "nVector size after clear(): " << vec.size();
// two vector to perform swap
vector<int> obj1, obj2;
obj1.push_back(2);
obj1.push_back(4);
obj2.push_back(6);
obj2.push_back(8);
cout << "nnVector 1: ";
for (int i = 0; i < obj1.size(); i++)
cout << obj1[i] << " ";
cout << "nVector 2: ";
for (int i = 0; i < obj2.size(); i++)
cout << obj2[i] << " ";
// Swaps obj1 and obj2
obj1.swap(obj2);
cout << "nAfter Swap nVector 1: ";
for (int i = 0; i < obj1.size(); i++)
cout << obj1[i] << " ";
cout << "nVector 2: ";
for (int i = 0; i < obj2.size(); i++)
cout << obj2[i] << " ";
}
Output:

Iterator
- begin(): Trả về iterator đang trỏ đến phần tử đầu tiên của vector.
- end(): Trả về iterator đang trỏ đến phần tử cuối cùng của vector.
Ví dụ:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec1;
for (int i = 1; i <= 10; i++)
vec1.push_back(i);
cout << "Understanding begin() and end() function: " << endl;
for (auto i = vec1.begin(); i != vec1.end(); ++i)
cout << *i << " ";
return 0;
}
Output:

Trong ví dụ trên, ta đã định nghĩa một vector có tên vec1, sau đó đẩy các giá trị từ 1 đến 10 vào vector bằng một vòng lặp và hàm push_back trong C++. Câu lệnh tiếp theo dùng để in giá trị của vector bằng vòng lặp for, sử dụng begin() và end() để chỉ định điểm đầu và cuối của vòng lặp.
Capacity
- size(): Trả về số lượng phần tử có trong vector.
- max_size(): Trả về số lượng phần tử lớn nhất vector có thể chứa.
- capacity(): Trả về kích thước không gian lưu trữ hiện được cấp cho vector, biểu thị bằng số phần tử dựa trên bộ nhớ được cấp cho vector.
- resize(): Đổi kích thước container để chứa được n phần tử. Nếu kích thước hiện tại của vector lớn hơn n thì các phần tử ở sau sẽ bị xoá bị vector. Ngược lại, nếu kích thước hiện tại nhỏ hơn n thì các phần tử sẽ được chèn bổ sung vào cuối vector.
- empty(): Trả về True nếu vector đang trống, nếu không thì False.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec1;
for (int i = 1; i <= 10; i++)
vec1.push_back(i);
cout << "Size of our vector: " << vec1.size();
cout << "nCapacity of our vector: " << vec1.capacity();
cout << "nMax_Size of our vector: " << vec1.max_size();
// resizes the vector size to 4
vec1.resize(4);
// prints the vector size after resize()
cout << "nSize of our vector after resize: " << vec1.size();
// checks if the vector is empty or not
if (vec1.empty() == false)
cout << "nVector is not empty";
else
cout << "nVector is empty";
return 0;
}
Output:

Trong tài liệu này, chúng ta đã tiếp cận các kiến thức cơ bản về việc sử dụng vector trong ngôn ngữ lập trình C++, cũng như các hàm phổ biến liên quan đến nó. Hy vọng rằng thông qua tài liệu này, bạn đã có thêm những cách khác nhau để áp dụng và hiểu về khái niệm vector trong C++ là gì. Nếu bạn còn bất kỳ điều gì cần được giải đáp thêm, xin vui lòng để lại bình luận phía dưới để nhận được sự hỗ trợ.
>Xem thêm:



































