Menu
CoddyTech

Mảng động

Bài học 13 trên 14 trong khóa học Con trỏ trong C++ của Coddy.

Nhờ lập trình hiện đại và các ngôn ngữ lập trình cấp cao, chúng ta có các cấu trúc dữ liệu và thuật toán giúp thực hiện những công việc phức tạp một cách đơn giản. Chúng ta có vector, stack, queue, v.v.

Cụ thể, vector trong C++ là một cấu trúc dữ liệu biểu diễn một mảng động. Bạn không cần khởi tạo độ dài của nó. Khi dùng phương thức .push_back(), độ dài sẽ tự động thay đổi và các phần tử bạn muốn thêm cũng tự động được thêm vào, v.v. 

Tuy nhiên, ở phía sau, vector được thay đổi một cách linh hoạt, còn tất cả phương thức và hàm đều được người khác xây dựng sẵn. Dù vậy, bạn nên biết cách cấp phát động cho một mảng hoạt động như thế nào.

Ví dụ, giả sử chúng ta có một mảng. Ta có thể khai báo mảng và khởi tạo độ dài bằng cách dùng new và dành chỗ trong bộ nhớ. Sau đó, ta có thể điền các giá trị mình muốn vào những vị trí đó trong bộ nhớ.

// Cấp phát bộ nhớ cho 5 số nguyên:
int *array = new int[5];
    
// Điền giá trị vào mảng:
for(int i = 0; i < 5; i++)
        array[i] = i + 1;
// In ra
for(int i = 0; i < 5; i++)
    cout << array[i] << " ";
    
// Giải phóng bộ nhớ
delete[] array;
Output:
1 2 3 4 5

Như bạn thấy, chúng ta đã dành chỗ trong bộ nhớ một cách linh hoạt cho 5 số nguyên, dùng vòng lặp for để điền vào những vị trí đó trong bộ nhớ, in các giá trị ra, rồi xóa mảng bằng delete[] để giải phóng bộ nhớ an toàn và tránh rò rỉ bộ nhớ.

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

challenge icon

Thử thách

Dễ

Ở đầu vào, bạn sẽ nhận được một số N biểu thị số phần tử của một mảng. Hãy tạo động một mảng có tên numbers bằng con trỏ và cấp phát bộ nhớ cho N số nguyên. Ở dòng đầu vào tiếp theo, bạn sẽ nhận được N phần tử, hãy nhập từng phần tử bằng một vòng lặp for rồi in ra tất cả phần tử ở vị trí chẵn (chỉ số bắt đầu là 0). Cuối cùng, hãy giải phóng vùng nhớ đã cấp phát lúc đầu.

Đầu vào
5
1 2 3 4 5

Đầu ra
1 3 5

Tự làm thử

#include <iostream>

using namespace std;

int main() {
    // Viết code tại đây
    return 0;
};

Tất cả bài học trong Con trỏ trong C++

Tự luyện tập: Trình biên dịch C++ online