


Bagaimanakah Anda Memadamkan Penunjuk dalam Vektor Dengan Selamat Tanpa Memusnahkan Objek yang Ditunjuk?
vektor::erase(): Memadam Penunjuk Tanpa Pemusnahan Objek
Masalah:
Vektor penunjuk objek memerlukan penyingkiran elemen sambil mengekalkan objek itu sendiri. Walau bagaimanapun, kebimbangan timbul mengenai kemungkinan kemusnahan objek apabila dialih keluar.
Jawapan:
vector::erase() mengalih keluar elemen secara berkesan daripada vektor dan memanggil pemusnah . Walau bagaimanapun, apabila berurusan dengan penunjuk, pemusnah tidak campur tangan dengan pemusnahan objek sebenar. Ini kerana bekas tidak mengambil alih pemilikan objek yang ditunjuk.
Penyelesaian:
Untuk memadamkan objek yang ditunjuk, adalah penting untuk menggunakan secara eksplisit operator padam pada setiap penunjuk. Berikut ialah coretan kod ilustrasi:
<code class="cpp">void clearVectorContents( std::vector <YourClass*> & a ) { for ( int i = 0; i < a.size(); i++ ) { delete a[i]; } a.clear(); }
Awas:
Menyimpan penunjuk mentah dalam bekas standard adalah tidak digalakkan. Sebaliknya, pertimbangkan untuk menggunakan boost::shared_ptr untuk mengurus peruntukan sumber dengan berkesan dengan penunjuk.
Penyelesaian Elegan:
Untuk pendekatan yang lebih serba boleh dan cekap, laksanakan functor untuk memadam penunjuk dalam vektor. Berikut ialah ilustrasi:
<code class="cpp">// Functor for deleting pointers in vector. template<class T> class DeleteVector { public: // Overloaded () operator. // This will be called by for_each() function. bool operator()(T x) const { // Delete pointer. delete x; return true; } };</code>
Menyebut functor ini dengan for_each menyediakan penyelesaian yang pantas dan ringkas:
<code class="cpp">for_each( myclassVector.begin(),myclassVector.end(), DeleteVector<myclass*>());</code>
di mana myclassVector menandakan vektor yang memegang penunjuk kepada objek myclass.
Strategi ini memastikan bahawa semua objek yang menunjuk ke arah dihapuskan dengan selamat sambil mengekalkan integriti vektor.
Atas ialah kandungan terperinci Bagaimanakah Anda Memadamkan Penunjuk dalam Vektor Dengan Selamat Tanpa Memusnahkan Objek yang Ditunjuk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Apakah jenis nilai yang dikembalikan oleh fungsi bahasa C? Apa yang menentukan nilai pulangan?

Gulc: Perpustakaan C dibina dari awal

Langkah Format Fungsi Fungsi C Langkah Penukaran Kes

Apakah definisi dan peraturan panggilan fungsi bahasa C dan apakah itu

Di manakah nilai pulangan fungsi bahasa C yang disimpan dalam ingatan?

Penggunaan dan perkongsian frasa yang berbeza

Bagaimanakah saya menggunakan algoritma dari STL (jenis, mencari, mengubah, dll) dengan cekap?

Bagaimana Perpustakaan Templat St Standard (STL) berfungsi?
