Câu lạc bộ Tin học dành cho học sinh Tiểu học

HỌC C++ ĐỀ ⚙️ TIẾT 14: MẢNG, VECTOR VÀ DỮ LIỆU NÂNG CAO TRONG C++

Trạng thái

♥ Lượt xem: 4
♥ Lượt phản hồi: 0

Tham gia
28/10/2025
Bài viết
368
Điểm Like
1,748
Điểm Uy tín
364,562
Tí Tinh Tế
Miu Mềm Mại
Rồng Rực Rỡ
Tỵ Tinh Tường
Heo Hiền Hậu
Tuổi Mùi
Phù điêu Hổ
Phù điêu Rồng
Hổ Hào Hiệp
Ngựa Ngộ Nghĩnh
Dê Dịu Dàng
Tích cực hoạt động

🎯 Mục tiêu của tiết học​

  • Hiểu sự khác biệt giữa mảng tĩnh (array)vector (mảng động)
  • Biết cách thao tác dữ liệu bằng vòng lặp, hàm, và cấu trúc dữ liệu
  • Làm quen với mảng 2D, vector lồng vector, và struct + vector
  • Thực hành qua ví dụ thực tế: Quản lý điểm sinh viên 🎓

🧩 1. MẢNG TRUYỀN THỐNG (STATIC ARRAY)​

Mảng tĩnh có kích thước cố định — bạn phải biết số phần tử trước khi chạy chương trình.
Mã:
#include <iostream>
using namespace std;

int main() {
    int arr[5] = {10, 20, 30, 40, 50};

    for (int i = 0; i < 5; i++) {
        cout << "Phan tu " << i << ": " << arr[i] << endl;
    }
}
📘 Lưu ý:
  • arr[0] là phần tử đầu tiên.
  • Mảng trong C++ bắt đầu từ chỉ số 0.
  • Không thể thêm/xóa phần tử sau khi khai báo.

⚡ 2. VECTOR – MẢNG ĐỘNG (DYNAMIC ARRAY)​

vector trong C++ là mảng có thể tự mở rộng, nằm trong thư viện <vector>.
Mã:
#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> v;  // khởi tạo vector rỗng

    v.push_back(10);
    v.push_back(20);
    v.push_back(30);

    cout << "So phan tu: " << v.size() << endl;
    for (int x : v) cout << x << " ";
}
📗 Các hàm thường dùng:
HàmChức năng
push_back(x)Thêm phần tử vào cuối
pop_back()Xóa phần tử cuối
size()Số phần tử
clear()Xóa toàn bộ dữ liệu
front(), back()Lấy phần tử đầu/cuối
at(i)Truy cập phần tử thứ i an toàn

🧱 3. VECTOR 2 CHIỀU (BẢNG, LƯỚI)​

Khi bạn cần lưu dữ liệu dạng bảng, ma trận, bản đồ (map grid trong game chẳng hạn).
Mã:
#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<vector<int>> grid(3, vector<int>(3, 0)); // 3x3 toàn 0

    grid[1][1] = 5; // Gán giá trị trung tâm

    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            cout << grid[i][j] << " ";
        }
        cout << endl;
    }
}
📘 Kết quả:
Mã:
0 0 0
0 5 0
0 0 0
💡 Đây chính là nền tảng của game 2D, map, pathfinding (A), hay dữ liệu AI*.

🧠 4. VECTOR + STRUCT (QUẢN LÝ DỮ LIỆU PHỨC TẠP)​

Lưu danh sách sinh viên, nhân vật, item, v.v...
Mã:
#include <iostream>
#include <vector>
#include <string>
using namespace std;

struct Student {
    string name;
    double score;
};

int main() {
    vector<Student> students;

    students.push_back({"Huy", 9.5});
    students.push_back({"Linh", 8.7});
    students.push_back({"Khang", 7.8});

    double total = 0;
    for (auto& s : students) {
        cout << s.name << " - " << s.score << endl;
        total += s.score;
    }

    cout << "Diem trung binh: " << total / students.size() << endl;
}
📊 Ứng dụng:
  • Dễ mở rộng
  • Tạo hệ thống inventory, danh sách NPC, log dữ liệu,...

🧮 5. VECTOR NÂNG CAO – SẮP XẾP & TÌM KIẾM​

Mã:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    vector<int> nums = {5, 2, 9, 1, 7};

    sort(nums.begin(), nums.end()); // sắp tăng dần
    reverse(nums.begin(), nums.end()); // đảo ngược

    for (int n : nums) cout << n << " ";
}
📗 Kết quả:
Mã:
9 7 5 2 1
💡 Hàm sort() & reverse() nằm trong <algorithm>.
Có thể tùy chỉnh quy tắc sắp xếp bằng lambda function.

🎓 BÀI TẬP NÂNG CAO​

Hãy viết chương trình Quản lý lớp học:
  1. Dùng struct Student (tên, điểm, ID).
  2. Dùng vector<Student> để lưu danh sách.
  3. Cho phép thêm, xóa, xem danh sách, tính trung bình.
  4. Sắp xếp sinh viên theo điểm từ cao đến thấp.

💬 TỔNG KẾT​

Chủ đềGhi nhớ
Mảng tĩnhNhanh, nhưng cố định
VectorLinh hoạt, dễ dùng
Struct + VectorDữ liệu phức tạp
AlgorithmDễ xử lý danh sách lớn
 

Trạng thái

♥ Lượt xem: 4
♥ Lượt phản hồi: 0

Trên Bottom