Mengakses Elemen dalam Peta Konst: Operator[] vs. at()
Apabila bekerja dengan peta malar, mengakses elemen menggunakan operator[ ] mungkin gagal. Walau bagaimanapun, menggunakan at() adalah alternatif yang berdaya maju. Mengapakah ini berlaku?
Dalam peta bukan const, operator[] melaksanakan dua fungsi:
Walau bagaimanapun, dalam peta const, operator[] tidak dibenarkan mengubah suai struktur data asas. Oleh itu, ia hanya boleh melaksanakan fungsi pertama dan melemparkan ralat apabila cuba memasukkan elemen baharu menggunakan fungsi kedua.
Sebaliknya, at() ialah kaedah yang diperkenalkan dalam C 11 khusus untuk mengakses elemen dalam a peta const. Ia memberikan beberapa faedah:
Atas sebab ini, at() ialah kaedah yang disyorkan untuk mengakses elemen dalam const std::map. Kod contoh:
#include <iostream> #include <map> int main() { std::map<int, char> A; A[1] = 'b'; A[3] = 'c'; const std::map<int, char>& B = A; std::cout << B.at(3) << std::endl; // it works std::cout << B[3] << std::endl; // it does not work }
Akan mengeluarkan:
c error: can't access elements with operator[] in a const std::map
Atas ialah kandungan terperinci Akses Peta Const: Mengapa Gunakan `at()` Daripada `operator[]`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!