Halo~ teman sekelas, artikel ini akan mempelajari wadah vektor di C. Sebagai salah satu array dinamis yang paling umum digunakan di Perpustakaan Templat Standar (STL), vektor menyediakan penyimpanan elemen yang fleksibel dan metode akses yang efisien. Kita akan mulai dengan pengetahuan dasar dan secara bertahap mempelajari operasi pembuatan, inisialisasi, traversal, manajemen ruang, penambahan, penghapusan, pemeriksaan dan modifikasi. Melalui contoh dan analisis terperinci, kami berharap dapat membantu pembaca memahami dan menguasai keterampilan dan tindakan pencegahan dalam menggunakan vektor.
Vektor adalah wadah urutan yang mewakili array berukuran variabel.
Sama seperti array, vektor juga menggunakan ruang penyimpanan berkelanjutan untuk menyimpan elemen. Ini berarti Anda dapat menggunakan subskrip untuk mengakses elemen vektor, yang sama efisiennya dengan array. Namun tidak seperti array, ukurannya dapat diubah secara dinamis, dan ukurannya akan ditangani secara otomatis oleh container.
Pada dasarnya, vektor menggunakan array yang dialokasikan secara dinamis untuk menyimpan elemen-elemennya. Saat elemen baru dimasukkan, array perlu diubah ukurannya untuk menambah ruang penyimpanan. Hal ini dilakukan dengan mengalokasikan array baru dan kemudian memindahkan semua elemen ke dalam array ini. Dari segi waktu, ini adalah tugas yang relatif mahal, karena ukuran vektor tidak diubah setiap kali elemen baru ditambahkan ke wadah.
Strategi ruang alokasi vektor: vektor mengalokasikan sejumlah ruang ekstra untuk mengakomodasi kemungkinan pertumbuhan karena ruang penyimpanan lebih besar dari ruang penyimpanan sebenarnya yang dibutuhkan. Perpustakaan yang berbeda menggunakan strategi yang berbeda untuk mengimbangi penggunaan ruang dan realokasi. Namun bagaimanapun juga, realokasi harus meningkat secara logaritmik dalam ukuran interval, sehingga penyisipan elemen di akhir dilakukan dalam waktu yang konstan.
Oleh karena itu, vektor membutuhkan lebih banyak ruang penyimpanan untuk mendapatkan kemampuan mengelola ruang penyimpanan dan tumbuh secara dinamis dan efisien.
Dibandingkan dengan wadah urutan dinamis lainnya (deque, list, dan forward_list), vektor lebih efisien saat mengakses elemen, dan menambah serta menghapus elemen di akhir relatif efisien. Untuk operasi penghapusan dan penyisipan lainnya yang belum selesai, efisiensinya bahkan lebih rendah. Lebih baik menggunakan iterator dan referensi terpadu daripada daftar dan forward_list.
Ada tiga bidang penggunaan STL: dapat menggunakannya, dapat memahaminya, dan dapat mengembangkannya. Mari kita pelajari vektor selanjutnya.