Làm sao để xóa 1 mảng nhưng không thay đổi mảng ban đầu

Chả là em muốn xóa 1 phần tử của mảng và chèn 1 giá trị vào 1 mảng
nhưng sau khi xóa xong thì mảng bị thay đổi, vậy phải làm sao để lấy mảng ban đầu (mảng lúc chưa bị xóa) để chèn ạ.
Em cũng nghĩ đến cách coppy sang 1 mảng khác giống hệt, nhưng em muốn dùng cách tham chiếu tham trị hơn, mong các tiền bối có thể chỉ giúp em ạ, em cảm ơn nhiều

Sao phải cần mảng cũ nhỉ? Demo à? :slight_smile:

3 Likes
       **A[ ] = 1 2 3 4 5 6**

Ý bạn là:
A[ ] = 1 x 3 4 5 6
Thay vì
A[ ] = 1 3 4 5 6 0

:v

2 Likes

Copy ra mảng khác rồi sửa.

3 Likes

Hi Mai Vian.
Bạn xóa như nào và trèn như nào ?
Em có phóng tàu vũ trụ lên mặt trăng nhưng nó đi nhầm sang sao hỏa. Em cũng nghĩ đến cách thay đổi động cơ phóng, nhưng em muốn tính lại quỹ đạo hơn, mong các tiền bối có thể chỉ giúp em ạ, em cảm ơn nhiều

2 Likes

Cách duy nhất là tạo bản sao và làm việc với bản sao. Đây là cách chúng ta copy array

int a[3], b[3];
a[3] = {1, 2, 3};
memcpy(a, b, 3*sizeof(int));
3 Likes

Thế không có cách nào dùng con trỏ ạ, ý là dùng toán tử * vs toán tử & ạ

Cậu phải nói thật rõ là muốn xoá như thế nào.
Ví dụ lúc đầu là gì, thao tác xong thì là gì ?
Thì mọi người mới chỉ được. Vừa chỉ vừa đoán mệt lắm.

3 Likes
  • Một là bạn có máu M thích hành hạ bản thân = những việc cao siêu
  • Hai là bạn có thể xóa 1 phần tử = cách đem nó về cuối mảng và dồn mấy cái khác lên rồi tìm cách “né” cái đó ra mà không cần phải tạo mảng mới

trong đầu mình nghĩ như lày (tượng trưng):

// ref là "passed by reference"

// a : mảng a cần xóa phần tử
// index : vị trí cần xóa trong mảng
// arr_len : độ dài của mảng 
deleteElement(a, index, ref arr_len) {
    arr_len -= 1; // đây là cách né 

    *insert quá trình dồn a[index] vào cuối mảng*  
    // bây giờ độ dài mảng xử lý qua arr_len chứ không phải sizeof(a)
}
3 Likes

Thích thì chiều.

int* back_to_somewhere(int &a[], int n) { // có cả tham chiếu với cả tham trị luôn nhá
	int *res;
	res = (int*) malloc(n*sizeof(int)); // 1 xoá 1 chèn thì độ dài không đổi
	// copy mảng
	return res; // return con trỏ luôn đây này
}
4 Likes

em hỏi ngu cái là cái a nó là gì trong hàm thế :confused:

a là mảng ban đầu thôi mà. Có đoạn chép mảng nhưng mình lười viết.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?