Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mendapatkan Penunjuk Data Mentah dari std::vector?

Bagaimana untuk Mendapatkan Penunjuk Data Mentah dari std::vector?

Barbara Streisand
Barbara Streisandasal
2024-11-11 17:34:02198semak imbas

How to Retrieve a Raw Data Pointer from a std::vector?

Mengambil Penunjuk Data Mentah daripada std::vector

Masalah:

Anda berusaha untuk gunakan std::vector sebagai tatasusunan char dalam fungsi yang menerima penunjuk tidak sah. Percubaan untuk menghantar vektor secara langsung atau melalui pemula begin() telah mengakibatkan data atau amaran pengkompil yang salah.

Penyelesaian:

Untuk mengakses data mentah std ::vektor, dapatkan alamat elemen awalnya menggunakan salah satu daripada yang berikut kaedah:

  • &something[0] atau &something.front() - mengembalikan alamat elemen pada indeks 0.
  • &*something.begin() - mengembalikan alamat elemen yang ditunjuk oleh pemula begin().

Dalam C 11 dan seterusnya, pilihan tambahan ialah tersedia:

  • &something.data() - mengembalikan alamat elemen awal, memastikan keselamatan walaupun untuk bekas kosong.

Contoh:

void process_data(const void *data);

std::vector<char> something;

// Cast the raw data pointer to char* for compatibility.
char *data_ptr = reinterpret_cast<char*>(something.data());
process_data(data_ptr);

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Penunjuk Data Mentah dari std::vector?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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