cuốn sách gpt4 ai đã làm

Định hình lại mảng C# tại chỗ

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 22:42:53 31 4
mua khóa gpt4 Nike

Bạn có thể thực hiện các thao tác trên mảng không phụ thuộc vào thứ hạng của mảng. Trình vòng lặp không phải lúc nào cũng là giải pháp phù hợp. mảng đã cho

double[,] myarray = new double[10,5];

Nên thực hiện quy trình làm việc sau:

  1. Định hình lại mảng có Thứ hạng>1 thành một mảng tuyến tính có thứ hạng = 1 và cùng số phần tử. Điều này sẽ xảy ra tại chỗ để cải thiện hiệu quả thời gian chạy. Sao chép không được phép.
  2. Truyền mảng đã được định hình lại cho phương thức chỉ được xác định cho mảng Hạng=1. Ví dụ mảng.copy()
  3. Định hình lại mảng kết quả về thứ hạng và kích thước ban đầu.

Có một câu hỏi tương tự về chủ đề này:Cách định hình lại mảng trong C# .Giải pháp ở đó sử dụng thao tác sao chép bộ nhớ của BlockCopy().

我的问题是:Có thể thực hiện được kiểu định hình lại này mà không cần sao chép bộ nhớ không? Hoặc thậm chí theo cách tạm thời, như tạo Chế độ xem dữ liệu mới?

câu trả lời hay nhất

Cách diễn đạt ở đây hơi khó khăn nhưng chắc chắn không an toànđã sửa sẽ hoạt động. Không cần sao chép bộ nhớ, truy cập trực tiếp, nêm hạt tiêu và muối

CLR Không cho phép bạn truyền mảng theo cách bạn muốn, bất kỳ phương pháp nào khác mà bạn có thể nghĩ đến đều yêu cầu phân bổ một mảng mới và sao chép nó (lưu ý rằng bạn có thể thực hiện việc đó nhanh như chớp). Cách khả thi duy nhất khác là sử dụng cố định, cách này sẽ cung cấp cho bạn mảng 1D liền kề.

không an toàn public static void SomeMethod(int* p, int size)
{
cho (var i = 0; i < 4; i++)
{
//Thực hiện bất kỳ thao tác tuyến tính nào
*(p + i) *= 10;
}
}
...

var someArray = new int[2,2];
someArray[0, 0] = 1;
someArray[0,1] = 2;
someArray[1, 0] = 3;
someArray[1, 1] = 4;

//Định hình lại mảng thành mảng tuyến tính
đã sửa (int* p = someArray)
{
SomeMethod(p, 4);
}

// Định hình lại mảng kết quả về thứ hạng và kích thước ban đầu.

cho (int i = 0; i < 2; i++)
{
vì (int j = 0; j < 2; j++)
{
Console.WriteLine(someArray[i, j]);
}
}

输出

10
20
30
40

Về c# - định hình lại mảng c# tại chỗ, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/51401300/

31 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress