Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Memulakan `std::vector` dengan cekap daripada Array gaya C?

Bagaimana untuk Memulakan `std::vector` dengan cekap daripada Array gaya C?

Patricia Arquette
Patricia Arquetteasal
2024-11-09 14:22:02434semak imbas

How to Efficiently Initialize a `std::vector` from a C-style Array?

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!

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