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!