Jika proyek Anda CLI (Dukungan Runtime Bahasa Biasa) , maka:
Anda bisa menggunakan kelas array, bukan yang Anda dapatkan saat menulis:
#include <array>
using namespace std;
Dengan kata lain, bukan kelas array yang tidak dikelola yang Anda dapatkan saat menggunakan std namespace dan ketika menyertakan header array, bukan kelas array yang tidak dikelola yang didefinisikan dalam namespace std dan di header array, tetapi kelas array yang dikelola dari CLI.
dengan kelas ini, Anda dapat membuat array dari peringkat apa pun yang Anda inginkan.
Kode berikut di bawah ini membuat array dua dimensi baru 2 baris dan 3 kolom dan tipe int, dan saya beri nama "arr":
array<int, 2>^ arr = gcnew array<int, 2>(2, 3);
Sekarang Anda dapat mengakses elemen dalam array, dengan nama itu dan menulis hanya satu tanda kurung []
, dan di dalamnya, tambahkan baris dan kolom, dan pisahkan dengan koma ,
.
Kode berikut di bawah ini mengakses elemen di baris ke-2 dan kolom ke-1 dari array yang sudah saya buat di kode sebelumnya di atas:
arr[0, 1]
hanya menulis baris ini untuk membaca nilai dalam sel itu, yaitu mendapatkan nilai dalam sel ini, tetapi jika Anda menambahkan sama =
tanda , Anda akan menulis nilai dalam sel itu, yaitu mengatur nilai dalam sel ini. Anda juga dapat menggunakan operator + =, - =, * = dan / = untuk angka saja (int, float, double, __int16, __int32, __int64 dan lain-lain), tetapi yakin Anda sudah mengetahuinya.
Jika proyek Anda bukan CLI, maka Anda dapat menggunakan kelas array yang tidak dikelola dari namespace std, jika Anda #include <array>
, tentu saja, tetapi masalahnya adalah bahwa kelas array ini berbeda dari array CLI. Buat array jenis ini sama seperti CLI, kecuali Anda harus menghapus ^
tanda dan gcnew
kata kunci. Namun sayangnya parameter int kedua dalam <>
tanda kurung menentukan panjang (ukurannya) dari array, bukan peringkatnya!
Tidak ada cara untuk menentukan peringkat dalam array semacam ini, peringkat adalah fitur array CLI saja. .
array std berperilaku seperti array normal di c ++, yang Anda tetapkan dengan pointer, misalnya int*
dan kemudian new int[size]
:, atau tanpa pointer:, int arr[size]
tetapi tidak seperti array normal dari c ++, array std menyediakan fungsi yang dapat Anda gunakan dengan elemen-elemen array, seperti mengisi, memulai, mengakhiri, ukuran, dan lain-lain, tetapi array normal tidak memberikan apa-apa .
Tetapi array masih std adalah array satu dimensi, seperti array c ++ normal. Tetapi berkat solusi yang orang lain sarankan tentang bagaimana Anda dapat membuat normal c ++ array satu dimensi ke array dua dimensi, kita dapat mengadaptasi ide yang sama ke std array, misalnya menurut ide Mehrdad Afshari, kita dapat menulis kode berikut:
array<array<int, 3>, 2> array2d = array<array<int, 3>, 2>();
Baris kode ini menciptakan "jug array" , yang merupakan array satu dimensi yang masing-masing selnya atau menunjuk ke array satu dimensi lainnya.
Jika semua array satu dimensi dalam array satu dimensi sama panjang / ukurannya, maka Anda dapat memperlakukan variabel array2d sebagai array dua dimensi nyata, plus Anda dapat menggunakan metode khusus untuk memperlakukan baris atau kolom, tergantung pada bagaimana Anda melihatnya dalam pikiran, dalam array 2D, array std mendukung.
Anda juga dapat menggunakan solusi Kevin Loney:
int *ary = new int[sizeX*sizeY];
// ary[i][j] is then rewritten as
ary[i*sizeY+j]
tetapi jika Anda menggunakan std array, kode tersebut harus terlihat berbeda:
array<int, sizeX*sizeY> ary = array<int, sizeX*sizeY>();
ary.at(i*sizeY+j);
Dan masih memiliki fungsi unik dari std array.
Perhatikan bahwa Anda masih dapat mengakses elemen-elemen dari array std menggunakan []
tanda kurung, dan Anda tidak harus memanggil at
fungsi. Anda juga dapat mendefinisikan dan menetapkan variabel int baru yang akan menghitung dan mempertahankan jumlah total elemen dalam array std, dan menggunakan nilainya, alih-alih mengulangisizeX*sizeY
Anda dapat menentukan kelas generik array dua dimensi Anda sendiri, dan menentukan konstruktor dari kelas array dua dimensi untuk menerima dua bilangan bulat untuk menentukan jumlah baris dan kolom dalam array dua dimensi baru, dan menentukan fungsi get yang menerima dua parameter bilangan bulat yang mengakses elemen dalam array dua dimensi dan mengembalikan nilainya, dan mengatur fungsi yang menerima tiga parameter, bahwa keduanya pertama adalah bilangan bulat yang menentukan baris dan kolom dalam array dua dimensi, dan parameter ketiga adalah nilai baru dari elemen. Jenisnya tergantung pada jenis yang Anda pilih di kelas generik.
Anda akan dapat menerapkan semua ini dengan menggunakan salah satu c yang normal ++ array (pointer atau tanpa) atau std array dan penggunaan salah satu ide bahwa orang-orang lain yang disarankan, dan membuatnya mudah untuk digunakan seperti array cli, atau seperti dua array dimensi yang dapat Anda tetapkan, tetapkan, dan gunakan dalam C #.