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:
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>:
#include <vector>
std::vector<int> numbers; // Creates an empty vector of integersHoạ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.
std::vector<int> scores = {90, 85};
scores.push_back(95); // scores now contains {90, 85, 95}
std::cout << scores.size(); // Prints 3Hãy tự mình thử
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().
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ử
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.
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ử
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ì?
std::vector<int> numbers; // come aggiungere il valore 50?