Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Mendapatkan Penunjuk Data Mentah daripada `std::vector`?
Menyediakan Penunjuk Data Mentah untuk std::vector
Apabila bekerja dengan std::vector sebagai tatasusunan aksara, mungkin terdapat perlu menghantar penuding data mentah kepada fungsi yang menjangkakan penunjuk tidak sah. Pada asalnya, tatasusunan char digunakan untuk tujuan ini, seperti yang ditunjukkan oleh kod:
char something[] = "my data here"; process_data(something);
Walau bagaimanapun, kedinamikan std::vector adalah wajar, yang membawa kepada percubaan berikut:
vector<char> something; *cut* process_data(something);
Cabaran timbul dalam menghantar vektor char kepada fungsi supaya ia boleh mengakses mentah vektor data.
Meluluskan Penunjuk Data Mentah
Melalukan alamat objek vektor, menggunakan &sesuatu, adalah tidak betul kerana ia tidak memberikan alamat data. Begitu juga, menggunakan &something.begin() adalah bukan standard dan menghasilkan amaran.
Pendekatan yang betul adalah untuk mendapatkan alamat elemen awal bekas, yang boleh dicapai melalui:
&something[0] // or &something.front() &*something.begin()
Dalam C 11, kelas std::vector memperkenalkan fungsi ahli baharu, data(), yang mempunyai tujuan yang sama seperti kaedah di atas. Ia mengembalikan alamat elemen awal bekas dan selamat digunakan walaupun bekas itu kosong.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Penunjuk Data Mentah daripada `std::vector`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!