Mengakses Data Vektor Mentah sebagai Tata Array
Pertimbangkan keperluan untuk menggunakan std::vector sebagai tatasusunan aksara dalam fungsi yang menjangkakan penunjuk kosong. Pada mulanya, menggunakan tatasusunan char biasa adalah mudah. Walau bagaimanapun, beralih kepada fleksibiliti std::vector memberikan cabaran dalam mengakses data mentahnya.
Melalukan Penunjuk Vektor kepada Fungsi
Percubaan segera untuk lulus vektor, &sesuatu, atau lelarannya, &something.begin(), kepada fungsi kerana penunjuk tidak sah tidak menghasilkan hasil yang diingini. Sebaliknya, &something mengembalikan alamat objek std::vector, bukan data itu sendiri, manakala &something.begin() menyediakan alamat iterator, yang tidak dibenarkan sebagai lvalue.
Mengalamatkan Elemen pada Indeks 0
Penyelesaian terletak pada mendapatkan semula alamat elemen pertama dalam vektor. Ini boleh dicapai melalui pelbagai kaedah. Satu pendekatan ialah menggunakan &something[0], yang memberikan alamat elemen pada indeks 0. Pilihan lain ialah menggunakan &something.front(), yang melaksanakan tugas yang sama.
Data() Fungsi dalam C 11
Untuk C 11 dan kemudian, fungsi ahli yang mudah dipanggil data() telah diperkenalkan dalam std::vector. Fungsi ini secara langsung mengembalikan alamat elemen awal dalam bekas. Kelebihannya terletak pada keselamatan untuk digunakan walaupun bekas kosong.
Kesimpulan
Untuk menghantar data std::vektor ke fungsi yang menerima penunjuk tidak sah, ia adalah perlu untuk mendapatkan semula alamat elemen pertama dalam vektor. Ini boleh dilakukan menggunakan fungsi &something[0], &something.front(), atau data(), bergantung pada versi C dan saiz bekas.
Atas ialah kandungan terperinci Bagaimana untuk Mengakses Data Vektor Mentah sebagai Array Char dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!