Chuyển đến nội dung chính
Mô-đun 5 · Bài học 1 trong tổng số 211/18 trong khóa học~12 min
Bài học theo mô-đun (1/2)

Mảng và Vector

Trong C++, việc quản lý bộ sưu tập dữ liệu chủ yếu được thực hiện thông qua hai công cụ: mảng kiểu cũ (mảng kiểu C) và vectơ (std::vector). Hiểu sự khác biệt giữa bộ nhớ tĩnh và bộ nhớ động là nền tảng để viết mã hiệu quả.


1. Mảng tĩnh (Mảng kiểu C)

Mảng là tập hợp các phần tử cùng loại được lưu trữ ở các vị trí bộ nhớ liền kề. Kích thước của một mảng tĩnh phải được biết tại thời điểm biên dịch và không thể thay đổi sau này:

C++
int grades[5] = {18, 22, 25, 28, 30}; // Array of 5 integers

Đặc điểm chính:

  • Kích thước cố định: Bạn không thể thêm hoặc xóa các phần tử khi chạy.
  • Stack Allocation: Phân bổ và phân bổ rất nhanh.
  • Truy cập: Thực hiện thông qua toán tử chỉ mục [] (ví dụ: grades[0] cho phần tử đầu tiên).

2. Vectơ động (std::vector)

Thư viện mẫu chuẩn C++ (STL) cung cấp lớp std::vector, đại diện cho một mảng động. Để sử dụng nó, bạn phải bao gồm tiêu đề <vector>:

C++
#include <vector>

std::vector<int> numbers; // Creates an empty vector of integers

Hoạt động chung:

  • Nối vào cuối: Phương thức .push_back(value) chèn một phần tử vào cuối vectơ, tự động phân bổ lại bộ nhớ nếu cần.
  • Kích thước: Phương thức .size() trả về số phần tử hiện có trong vectơ.
  • Truy cập an toàn: Ngoài toán tử [], bạn có thể sử dụng phương thức .at(index) (ví dụ: numbers.at(0)), phương thức này sẽ đưa ra một ngoại lệ nếu chỉ mục nằm ngoài giới hạn.
C++
std::vector<int> scores = {90, 85};
scores.push_back(95); // scores now contains {90, 85, 95}
std::cout << scores.size(); // Prints 3

Hãy tự mình thử

tập thể dục#cpp.m5.l1.e1
Nỗ lực: 0Đang tải…

Khai báo một std::vector của các số nguyên có tên là number. Thêm các giá trị 10, 20 và 30 bên trong nó bằng phương thức .push_back(), sau đó in kích thước của nó bằng Number.size().

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Khai báo vectơ bằng `std::vector<int> số;`, chèn ba số bằng `.push_back(value)`và in nó bằng`std::cout << number.size();`.

Giải pháp khả dụng sau 3 lần thử

tập thể dục#cpp.m5.l1.e2
Nỗ lực: 0Đang tải…

Trong main, một mảng lớp gồm 5 phần tử được xác định. Viết một vòng lặp for để tính tổng của tất cả các phần tử trong mảng, lưu nó vào biến sum và in nó bằng std::cout.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Sử dụng vòng lặp `for (int i = 0; i < 5; ++i)` và tính tổng từng phần tử bên trong vòng lặp với`sum +=grade[i];`.

Giải pháp khả dụng sau 3 lần thử

Quiz#cpp.m5.l1.q1
Sẵn sàng

Phương pháp chính xác để nối một phần tử vào cuối std::vector trong C++ là gì?

C++
std::vector<int> numbers; // come aggiungere il valore 50?
Tùy chọn trả lời