← Danh sách bài học
📊
Mảng
Mảng lưu nhiều phần tử cùng kiểu tại vùng nhớ liên tiếp. Truy cập O(1) qua chỉ số. C++ có mảng tĩnh (int a[100]) và vector động (STL).
1. Mảng 1 chiều
Khai báo: int a[5]; a[0] = 1; ... Truy cập từ 0 đến n-1. Vượt biên = undefined behavior.
2. Mảng 2 chiều (ma trận)
int m[3][4]; duyệt bằng 2 vòng lồng.
int m[3][3];
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
cin >> m[i][j];3. vector — mảng động
vector<int> v; v.push_back(x); v.size(); v[i]; v.pop_back(); v.clear(); Ưu tiên vector hơn mảng thô.
💻 Code mẫu thực chiến
Thống kê điểm học sinh
Nhập điểm N học sinh, in điểm cao nhất, thấp nhất, trung bình.
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n; cin >> n;
vector<double> d(n);
double sum = 0, mx = 0, mn = 10;
for (int i = 0; i < n; i++) {
cin >> d[i];
sum += d[i];
if (d[i] > mx) mx = d[i];
if (d[i] < mn) mn = d[i];
}
cout << "Max=" << mx << " Min=" << mn << " Avg=" << sum/n;
}Nhân hai ma trận
Ứng dụng: đồ hoạ 3D, machine learning.
int A[2][3], B[3][2], C[2][2] = {0};
// nhập A, B ...
for (int i = 0; i < 2; i++)
for (int j = 0; j < 2; j++)
for (int k = 0; k < 3; k++)
C[i][j] += A[i][k] * B[k][j];💡 Mẹo & lưu ý
- Kích thước mảng tĩnh phải là hằng số biết trước khi biên dịch.
- Vector tự cấp phát và mở rộng — tránh dùng new/delete thủ công.
- Duyệt ma trận theo hàng nhanh hơn theo cột (cache-friendly).