Chèn phần tử vào mảng động
Bài học 14 trên 14 trong khóa học Con trỏ trong C++ của Coddy.
Cuối cùng, bạn cần biết cách thêm động một phần tử vào mảng. Nếu không thể dùng vector và mảng đã đầy, bạn cần tìm cách thay đổi độ dài của mảng một cách động rồi thêm phần tử mong muốn.
Đây là ví dụ nhỏ về cách thay đổi mảng một cách động để nó hoạt động như một vector
- Ta có mảng được cấp phát động ban đầu
- Ta tạo một mảng mới được cấp phát động có độ dài tăng thêm 1
- Ta sao chép tất cả phần tử từ mảng cũ sang mảng mới
- Ở chỉ số cuối cùng (vị trí +1), ta thêm phần tử mong muốn
- Ta xóa mảng cũ
- Ta cho con trỏ của mảng cũ đã bị xóa trỏ đến mảng mới đã chỉnh sửa
- Cuối cùng, khi chương trình kết thúc, ta xóa con trỏ của mảng thêm một lần nữa
int *array = new int[5]; // Mảng ban đầu
for(int i = 0; i < 5; i++)
array[i] = i + 1;
int *newarray = new int[6]; // Mảng mới dài hơn 1 phần tử
for(int i = 0; i < 5; i++)
newarray[i] = array[i]; // Sao chép tất cả các phần tử
newarray[5] = 6; // Thêm phần tử cuối cùng
delete[] array; // Giải phóng bộ nhớ của mảng cũ
array = newarray; // Cho array trỏ đến mảng mới
for(int i = 0; i < 5; i++)
cout << array[i] << " ";
delete[] array; // Giải phóng bộ nhớ của mảng mớiBà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 độ.
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 độ.
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 độ.
Thử thách
DễVới mảng được cấp phát động, đừng thay đổi code mặc định. Hãy thêm code vào giữa để nhập 3 số và thêm chúng vào cuối mảng như ví dụ trong bài học.
Đừng thay đổi code mặc định
Tự làm thử
#include <iostream>
using namespace std;
int main() {
int *numbers = new int[5];
for(int i = 0; i < 5; i++)
numbers[i] = i + 1;
// ĐỪNG THAY ĐỔI ĐOẠN CODE PHÍA TRÊN
// Viết code của bạn ở đây
// Nhập 3 số nguyên (integer)
// Thêm động các số đó vào mảng (array) "numbers"
// ĐỪNG THAY ĐỔI ĐOẠN CODE PHÍA DƯỚI
for(int i = 0; i < 8; i++)
cout << numbers[i] << " ";
delete[] numbers;
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