Rumah >pembangunan bahagian belakang >C++ >Bagaimana Mengeluarkan Subvektor dengan Cekap dari C std::vector?

Bagaimana Mengeluarkan Subvektor dengan Cekap dari C std::vector?

Linda Hamilton
Linda Hamiltonasal
2024-12-04 09:24:11347semak imbas

How to Efficiently Extract a Subvector from a C   std::vector?

Mengekstrak Subvektor daripada Vektor

Dalam C , std::vector ialah bekas yang menyimpan jujukan unsur yang bersebelahan. Bagaimana jika anda perlu mengekstrak subset elemen daripada vektor besar untuk mencipta yang baharu?

Untuk membina vektor baharu yang terdiri daripada elemen X hingga Y, anda boleh menggunakan langkah berikut:

  1. Dapatkan iterator yang merujuk elemen pertama dan terakhir subvektor:
vector<T>::const_iterator first = myVec.begin() + X;
vector<T>::const_iterator last = myVec.begin() + Y + 1;
  1. Gunakan iterator ini untuk membina vektor baharu:
vector<T> newVec(first, last);

Pendekatan ini mengambil masa O(N) untuk membina vektor baharu, tetapi ia cekap untuk vektor besar. Jika anda perlu mencipta salinan elemen lain dalam vektor asal, anda boleh menggunakan std::copy :

vector<T> newVec(Y - X + 1);
std::copy(first, last, newVec.begin());

Jika vektor asal sangat besar dan anda hanya memerlukan sebahagian daripadanya, anda boleh pertimbangkan untuk menggunakan std::deque dan bukannya std::vector. A std::deque menyokong pemasukan dan pemadaman yang cekap pada kedua-dua hujungnya, menjadikannya lebih sesuai untuk pengekstrakan subvektor dinamik.

Atas ialah kandungan terperinci Bagaimana Mengeluarkan Subvektor dengan Cekap dari C 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