Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Cekap Menetapkan std::vector dari C-Style Array?
Apabila bekerja dengan sekatan data, ia boleh menjadi mencabar untuk mengintegrasikan tatasusunan gaya C dengan C moden membina seperti std::vector. Soalan ini menyelidiki tugasan cekap std::vector menggunakan tatasusunan gaya C.
Kelas Foo, seperti yang diterangkan dalam soalan, menghadapi dilema menerima data sebagai tatasusunan gaya C tetapi memerlukan untuk menyimpannya dalam std::vector. Pendekatan mudah yang melibatkan saiz semula dan gelung atau menggunakan std::copy() adalah berdaya maju, tetapi pengoptimuman selanjutnya mungkin diingini.
Rahsianya terletak pada mengenali kuasa penukaran penunjuk kepada lelaran. Pertimbangkan coretan berikut:
w_.assign(w, w + len);
Dalam kod ini, penunjuk w dan w len mentakrifkan permulaan dan penghujung tatasusunan gaya C, masing-masing. Apabila diserahkan kepada kaedah assign(), julat ini ditafsirkan sebagai julat lelaran, membenarkan std::vector untuk memulakan dengan cekap dirinya daripada tatasusunan.
Kaedah ini memanfaatkan sistem jenis asas C untuk menukar penunjuk dengan lancar kepada iterator, menyediakan penyelesaian yang paling ringkas dan cekap untuk menetapkan std::vector daripada tatasusunan gaya C.
Atas ialah kandungan terperinci Bagaimana untuk Cekap Menetapkan std::vector dari C-Style Array?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!