Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mendapatkan Penunjuk Data Mentah daripada `std::vector`?

Bagaimana untuk Mendapatkan Penunjuk Data Mentah daripada `std::vector`?

Susan Sarandon
Lepaskan: 2024-11-21 22:57:11
asal
303 orang telah melayarinya

How to Obtain a Raw Data Pointer from a `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);
Salin selepas log masuk

Walau bagaimanapun, kedinamikan std::vector adalah wajar, yang membawa kepada percubaan berikut:

vector<char> something;
*cut*
process_data(something);
Salin selepas log masuk

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()
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan