Melebihi Pemuatan Operator Tatasusunan dalam C dengan Berbilang Argumen
Dalam C , tatasusunan boleh diakses menggunakan operator tatasusunan [], yang biasanya mengambil masa indeks tunggal sebagai hujah. Walau bagaimanapun, sesetengah senario mungkin memerlukan mengakses tatasusunan menggunakan berbilang indeks. Adakah mungkin untuk melebihkan operator tatasusunan untuk mengambil berbilang argumen?
Coretan kod menyediakan percubaan untuk melebihkan operator tatasusunan untuk menerima tiga argumen, tetapi ia gagal dengan ralat "pengendali binari '[' mempunyai terlalu banyak parameter ."
Sebelum C 23
Sebelum C 23, adalah tidak mungkin untuk membebankan operator tatasusunan untuk menerima berbilang argumen. Penyelesaian adalah dengan membebankan operator() sebaliknya. Dengan mencipta fungsi dengan prototaip yang sesuai, seseorang boleh mensimulasikan gelagat operator tatasusunan dengan berbilang argumen.
C 23 and Beyond
Dengan kemunculan C 23 , berbilang argumen subskrip boleh dihantar terus kepada operator tatasusunan. Ciri ini memudahkan kod dan meningkatkan kebolehbacaan, terutamanya apabila bekerja dengan tatasusunan berbilang dimensi.
Sebagai contoh, pertimbangkan coretan kod berikut:
struct MultiDimArray { std::vector<int> m_cells; int m_res; int m_resSqr; const T& operator[](const int i, const int j, const int k) const { return m_cells[k*m_resSqr + j*m_res + i]; } T& operator[](const int i, const int j, const int k) { return m_cells[k*m_resSqr + j*m_res + i]; } };
Dalam kod ini, pengendali tatasusunan terlebih muatan mengambil tiga hujah. Ini membolehkan pengaturcara mengakses tatasusunan menggunakan berbilang indeks tanpa memerlukan fungsi tambahan atau penyelesaian.
Atas ialah kandungan terperinci Bolehkah Anda Melebihkan Operator Tatasusunan dalam C dengan Pelbagai Argumen?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!