Một số ưu và nhược điểm của vector so với mảng trong C++.
Vector là template class, chỉ có trong C++. Mảng là cấu trúc ngôn ngữ built-in, có trong nhiều ngôn ngữ.
Vector triển khai như mảng động với giao diện list, mảng có thể triển khai tĩnh hoặc động với kiểu nguyên thủy.
Ví dụ
#include <iostream>
#include <vector>
using namespace std;
int main() {
int array[10]; // mảng tĩnh
int* arr = new int[10]; // mảng động
vector<int> vec;
} Kích thước mảng cố định. Khi tạo không thể thay đổi. Kích thước vector động. Thêm phần tử, nếu chỗ không đủ, nó cấp phát thêm không gian mới và một chút dự trữ.
Mảng cấp phát động phải giải phóng thủ công. Vector tự giải phóng khi ra khỏi phạm vi.
Ví dụ
#include <iostream>
#include <vector>
using namespace std;
int main() {
int* arr = new int[10];
delete(arr); // giải phóng thủ công
vector<int> vec; // tự giải phóng khi hết scope
} Muốn lấy size mảng động không dễ dàng. Vector lấy size trong O(1).
Truyền mảng qua hàm phải truyền thêm biến size. Truyền vector không cần.
Không thể trả về mảng trừ khi dùng new động, nhưng có thể trả về vector từ hàm.