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
Lepaskan: 2024-12-04 09:24:11
asal
278 orang telah melayarinya

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;
Salin selepas log masuk
  1. Gunakan iterator ini untuk membina vektor baharu:
vector<T> newVec(first, last);
Salin selepas log masuk

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());
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan