Tôi tình cờ thấy một bài kiểm tra liên quan đến khai báo mảng với các kích cỡ khác nhau. Điều đầu tiên tôi nghĩ đến là tôi sẽ cần sử dụng phân bổ động với new
lệnh, như thế này:
while(T--) {
int N;
cin >> N;
int *array = new int[N];
// Do something with 'array'
delete[] array;
}
Tuy nhiên, tôi thấy rằng một trong những giải pháp cho phép trường hợp sau:
while(T--) {
int N;
cin >> N;
int array[N];
// Do something with 'array'
}
Sau một chút nghiên cứu tôi đọc rằng g ++ cho phép điều này, nhưng nó khiến tôi suy nghĩ, trong trường hợp nào thì cần phải sử dụng phân bổ động? Hoặc là trình biên dịch dịch điều này là phân bổ động?
Chức năng xóa được bao gồm. Lưu ý, tuy nhiên, câu hỏi ở đây không phải là về rò rỉ bộ nhớ.
new OBJ
trực tiếp vẫn là một cách phổ biến .
std::vector
thay thế (std::vector<int> array(N);
).