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
Susan Sarandonasal
2024-12-21 19:42:23617semak imbas

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());

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() );

Tetapkan Penukaran Pembina

set<int> s( vec.begin(), vec.end() );
vec.assign( s.begin(), s.end() );

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:
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