VD em có 1 đoạn code như sau
int n;
cin>>n;
int *mang=new int[n]
bây h muốn thêm 1 phần tử vào mãng thì phải làm thế nào ạ?
VD em có 1 đoạn code như sau
int n;
cin>>n;
int *mang=new int[n]
bây h muốn thêm 1 phần tử vào mãng thì phải làm thế nào ạ?
Tức là cấp phát thêm 1 ô nhớ cho mang
hả bạn ?
Nếu là thế thì bạn có thể viết ra 1 hàm realloc
cho riêng mình, như sau:
void REALLOC(int *&pointer, int oldsize, int newsize)
{
int *b = new int[oldsize];
for (int i = 0; i < oldsize; ++i)
{
b[i] = a[i];
}
delete[] a;
a = new int[newsize];
int Min = oldsize < newsize ? oldsize : newsize;
for (int i = 0; i < Min; ++i)
{
a[i] = b[i];
}
delete[] b;
}
Giải thích các tham số: Hàm gồm 3 tham số:
Tạo mảng mới -> copy phần tử cũ sang-> chèn phần tử vào cuối chuỗi -> xoá mảng cũ-> tạo mảng mới -> copy ngược lại.
Chào em. Mảng cấp phát động thì sao phải lo đến chuyện add phần tử nữa? .
Khai báo malloc hoặc realloc nhé em. search google nhé
cảm ơn anh. Em đã tìm đc hàm realloc :)))))))
cảm ơn mọi người đã nhiệt tình giúp đỡ
trong C++ không nên dùng hàm realloc đâu bạn nhé ! Đừng “lấy râu ông này cắm cằm bà kia”
Nó có vì nó nằm trong stdlib.h
, mà stdlib.h
là của C chứ không phải C++.
C++ nó bao hàm cả C nên sẽ có.
Tất nhiên dùng hàm realloc thì vẫn bình thường, nhưng sẽ có những trường hợp bị lỗi, và lúc đó bạn sẽ không biết lỗi ở đâu.