Menetapkan std::vector dari Array gaya-C Dengan Cekap
Apabila menghadapi tugas untuk memulakan std::vector dari a Tatasusunan gaya C, adalah penting untuk mempertimbangkan kedua-dua kecekapan dan kemudahan. Keadaan ini timbul apabila kekangan luaran menentukan bahawa data disediakan dalam format tatasusunan gaya C, seperti yang digambarkan dalam contoh kelas berikut:
class Foo { std::vector<double> w_; public: void set_data(double* w, int len){ // how to cheaply initialize the std::vector? }
Untuk memulakan std::vector dengan cekap, kita boleh memanfaatkan fakta bahawa penunjuk tatasusunan gaya C juga boleh dianggap sebagai iterator. Ini membolehkan kita mengelak daripada mencipta bekas perantaraan atau menggelungkan elemen individu:
Penyelesaian Elegan dan Cekap:
w_.assign(w, w + len);
Di sini, w ialah penunjuk kepada yang pertama elemen dalam tatasusunan gaya-C, dan w len menunjuk ke penghujung tatasusunan. Menggunakan fungsi tetapkan dengan iterator secara automatik membina elemen vektor daripada elemen tatasusunan. Kaedah ini bukan sahaja cekap tetapi juga ringkas dan elegan.
Atas ialah kandungan terperinci Bagaimana untuk Memulakan `std::vector` dengan cekap daripada Array gaya C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!