Menguasai Vektor C++: Array Dinamis, Iterator, dan Contoh Praktis
Apa Itu Vektor C++?
Sebuah vektor C++ adalah array dinamis yang secara otomatis mengubah ukurannya saat elemen ditambahkan atau dihapus. Elemen-elemennya disimpan secara kontigu, memungkini akses terindeks yang cepat dan penelusuran melalui iterator.
Penyisipan terjadi di akhir dalam waktu konstan amortisasi. Menghapus elemen terakhir juga waktu konstan, sementara menyisipkan atau menghapus di awal atau tengah memerlukan penggeseran elemen, menghasilkan kompleksitas waktu linier.
Kapan Menggunakan Vektor?
Ketika Anda membutuhkan kontainer yang dapat diubah ukurannya untuk elemen yang berubah seiring waktu.
Ketika ukuran akhir koleksi tidak diketahui saat waktu kompilasi.
Cara Menginisialisasi Vektor dalam C++
std::vector<data‑type> name (size, value); // size and value are optional
data‑type menentukan tipe elemen.
name adalah pengidentifikasi vektor.
Parameter opsional size menyisihkan ruang; value menginisialisasi semua elemen.
Iterator
Iterator menyediakan antarmuka mirip pointer ke elemen vektor. Fungsi iterator umum meliputi:
begin() – elemen pertama.
end() – elemen setelah akhir.
cbegin() – iterator hanya-baca ke elemen pertama.
cend() – iterator hanya-baca setelah elemen terakhir.
Modifier
Modifier mengubah isi vektor. Fungsi utama meliputi:
push_back() – tambahkan elemen.
insert() – sisipkan pada posisi yang ditentukan.
pop_back() – hapus elemen terakhir.
erase() – hapus rentang elemen.
clear() – hapus semua elemen.
Contoh 1: Iterasi Dasar
#include <iostream> #include <vector> int main() { std::vector<int> nums; for (int a = 1; a <= 5; ++a) { nums.push_back(a); } std::cout << "Output from begin and end: "; for (auto it = nums.begin(); it != nums.end(); ++it) { std::cout << *it << ' '; } std::cout << "\nOutput from cbegin and cend: "; for (auto it = nums.cbegin(); it != nums.cend(); ++it) { std::cout << *it << ' '; } return 0; }
Output:
Contoh 2: Modifier Lanjutan
#include <iostream> #include <vector> int main() { std::vector<int> nums; nums.assign(5, 1); // five elements, all initialized to 1 std::cout << "Vector contents: "; for (size_t i = 0; i < nums.size(); ++i) { std::cout << nums[i] << ' '; } nums.push_back(2); std::cout << "\nLast element: " << nums.back(); nums.pop_back(); std::cout << "\nVector contents: "; for (int a : nums) std::cout << a << ' '; nums.insert(nums.begin(), 7); std::cout << "\nFirst element: " << nums.front(); nums.clear(); std::cout << "\nSize after clear(): " << nums.size(); return 0; }
Output:
Fungsi Kapasitas
Tentukan dan manipulasi karakteristik penyimpanan vektor dengan fungsi berikut:
size() – jumlah elemen saat ini.
max_size() – jumlah elemen maksimum teoretis.
capacity() – kapasitas penyimpanan yang dialokasikan.
resize(n) – ubah jumlah elemen menjadi n, menambahkan atau menghapus sesuai kebutuhan.
empty() – benar jika vektor tidak berisi elemen.
Contoh 3: Eksplorasi Kapasitas
#include <iostream> #include <vector> int main() { std::vector<int> vector1; for (int x = 1; x <= 10; ++x) { vector1.push_back(x); } std::cout << "Vector size: " << vector1.size() << std::endl; std::cout << "Vector capacity: " << vector1.capacity() << std::endl; std::cout << "Maximum size of vector: " << vector1.max_size() << std::endl; vector1.resize(5); std::cout << "Vector size after resizing: " << vector1.size() << std::endl; if (!vector1.empty()) std::cout << "Vector is not empty" << std::endl; else std::cout << "Vector is empty" << std::endl; return 0; }
Output:
Kesimpulan Utama
Vektor C++ adalah kontainer yang sangat efisien dan dapat diubah ukurannya secara otomatis.
Elemen berada dalam memori kontigu, menyediakan akses acak yang cepat.
Penyisipan dan penghapusan di belakang adalah waktu konstan amortisasi; di depan atau tengah adalah waktu linier.
Vektor ideal untuk skenario dengan ukuran data yang tidak dapat diprediksi atau berubah.