30/09/2018, 23:53

[Hỏi] Làm sao để chèn 1 phần tử vào cuối mãng khi mãng được cấp phát động?

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 ạ?

Người bí ẩn viết 01:56 ngày 01/10/2018

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ố:

  • Tham số thứ 1: Tên mảng động cần thêm / giảm ô nhớ.
  • Tham số thứ 2: Kích thước cũ (hiện tại) của mảng.
  • Tham số thứ 3: Kích thước mới muốn thay đổi.
Văn Dương viết 01:57 ngày 01/10/2018

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.

Son Nguyen viết 01:57 ngày 01/10/2018

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é

Đoàn Việt Dũng viết 01:57 ngày 01/10/2018

cảm ơn anh. Em đã tìm đc hàm realloc :)))))))

Đoàn Việt Dũng viết 02:01 ngày 01/10/2018

cảm ơn mọi người đã nhiệt tình giúp đỡ

Người bí ẩn viết 01:59 ngày 01/10/2018

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”

Đoàn Việt Dũng viết 02:08 ngày 01/10/2018

reference của c++ có kìa bạn
http://www.cplusplus.com/reference/cstdlib/realloc/

Người bí ẩn viết 01:59 ngày 01/10/2018

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.

Bài liên quan
0