Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Saya Boleh Mengalih Keluar Elemen daripada Vektor C Berdasarkan Nilainya, Bukan Kedudukannya?

Bagaimanakah Saya Boleh Mengalih Keluar Elemen daripada Vektor C Berdasarkan Nilainya, Bukan Kedudukannya?

Patricia Arquette
Patricia Arquetteasal
2024-11-11 01:40:03849semak imbas

How Can I Remove Elements from a C   Vector Based on Their Value, Not Position?

Mengalih keluar Elemen Vektor Mengikut Nilai, Bukan Kedudukan

Dalam C , apabila berurusan dengan vektor, adalah perkara biasa untuk mengalih keluar elemen menggunakan kedudukannya dalam vektor. Sebagai contoh, myVector.erase(myVector.begin() 4) mengalih keluar elemen keempat.

Walau bagaimanapun, mungkin ada kalanya lebih mudah untuk mengalih keluar elemen berdasarkan nilainya dan bukannya kedudukan. Untuk mencapai matlamat ini, kita boleh memanfaatkan kuasa algoritma std::remove().

Algoritma std::remove()

Algoritma std::remove() adalah kuat alat yang boleh digunakan untuk mengalih keluar elemen tertentu daripada julat iterator. Sintaksnya adalah seperti berikut:

template <typename ForwardIterator, typename T>
ForwardIterator remove (ForwardIterator first, ForwardIterator last, const T& value);

di mana:

  • pertama dan terakhir ialah iterator yang mewakili julat elemen untuk mencari nilai.
  • nilai ialah nilai untuk dialih keluar daripada julat.

Contoh Penggunaan

Untuk mengalih keluar semua elemen dengan nilai "8" daripada vektor kami, kami boleh menggunakan kod berikut:

#include <algorithm>
...
vec.erase(std::remove(vec.begin(), vec.end(), 8), vec.end());

Gabungan std::remove() dan erase() ini biasanya dirujuk sebagai idiom erase-remove. Ia merupakan cara yang cekap dan mudah untuk mengalih keluar elemen mengikut nilai daripada vektor.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengalih Keluar Elemen daripada Vektor C Berdasarkan Nilainya, Bukan Kedudukannya?. 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