Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengeluarkan Pendua dengan Cekap dan Menyusun Vektor dalam C?

Bagaimanakah Saya Boleh Mengeluarkan Pendua dengan Cekap dan Menyusun Vektor dalam C?

Susan Sarandon
Lepaskan: 2024-12-21 19:42:23
asal
616 orang telah melayarinya

How Can I Efficiently Remove Duplicates and Sort a Vector in C  ?

Menghapuskan Pendua dan Menyusun Vektor Dengan Cekap

Apabila mengendalikan vektor besar dengan kemungkinan pendua, adalah penting untuk mencari pendekatan yang cekap untuk kedua-duanya mengalih keluar ini menduplikasi dan mengisih vektor. Artikel ini meneroka teknik yang paling berkesan untuk mencapai matlamat ini.

Menggunakan Manipulasi Vektor

Satu pilihan ialah menggunakan gabungan operasi isihan dan unik pada vektor. Walau bagaimanapun, kaedah ini boleh terbukti tidak cekap kerana keperluan untuk mengisih keseluruhan vektor sebelum mengalih keluar pendua.

vec.erase(
  std::unique(vec.begin(), vec.end()),
  vec.end());
std::sort(vec.begin(), vec.end());
Salin selepas log masuk

Menukar kepada Set

Pendekatan alternatif ialah dengan tukar vektor kepada set menggunakan pembina atau memasukkan elemen secara manual. Set secara automatik menghapuskan pendua dan menyediakan lelaran yang diisih. Selepas penukaran, data boleh disalin semula ke dalam vektor.

Penukaran Set Manual

set<int> s;
unsigned size = vec.size();
for( unsigned i = 0; i < size; ++i ) s.insert( vec[i] );
vec.assign( s.begin(), s.end() );
Salin selepas log masuk

Tetapkan Penukaran Pembina

set<int> s( vec.begin(), vec.end() );
vec.assign( s.begin(), s.end() );
Salin selepas log masuk

Prestasi Perbandingan

Apabila bilangan pendua adalah besar, menukar kepada set dan membuang semula data ke dalam vektor menjadi pilihan yang lebih pantas. Penukaran secara manual kepada set juga nampaknya lebih pantas sedikit daripada menggunakan pembina set.

Jujukan Optimum

Untuk prestasi optimum, adalah disyorkan untuk mengelak daripada mengisih vektor sebelum mengalih keluar pendua. Dengan menukar kepada set dan kemudian memindahkan data kembali, kedua-dua tugasan boleh diselesaikan dengan cekap.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengeluarkan Pendua dengan Cekap dan Menyusun Vektor dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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