Mendekati Kompetisi Sains Nasional (KSN), saya mau coba buat beberapa tutorial singkat tentang C++ yang semoga bisa bermanfaat. InsyaAllah tidak hanya untuk lomba programming, semoga ini bisa juga bermanfaat untuk yang akan menghadapi tes programming masuk kerja. Pada artikel pertama ini saya akan membahas struktur data Vector.
TL;DR; Bagi yang agak pingin cepat, bisa baca tutorial di codingannya langsung di link berikut ini https://ideone.com/vqSzoh
Apa itu struktur data vector?
Vector pada C++ (atau biasa disebut menggunakan std::vector
) adalah Array dinamis, yakni array yang proses memungkinkan proses insert dan delete element pada bagian tengah array dan “seakan-akan” mengubah ukuran array tersebut. Berikut kira-kira ilustrasinya:

Pas kuliah algoritma pemrograman dulu mungkin kita pernah diminta dosen kita untuk membuat array dinamis memanfaatkan linked list. Nah, memang dengan linked list kita bisa membuat array dinamis sederhana. Tapi sebenarnya, secara definisi aslinya, linked list yang pernah kita buat bukanlah array dinamis (detail bisa ditanyakan via comment). Nah, std::vector
ini lah yang disebut dengan array dinamis yang sebenarnya di C++.
Inisialisasi Vector
Proses deklarasi vector dilakukan dengan format vector<tipe_data> nama_vector
. Contoh untuk membuat variabel vector dengan tipe integer yang perlu dilakukan:
vector<int> v;
Berbeda dengan array, kita tidak “memberi tahu” ukuran vector saat deklarasi. Jika coba di-outputkan ukuran vector v menggunakan fungsi .size()
akan terlihat pada awalnya ukuran vector adalah 0.
vector<int> v; cout << v.size() << endl; // output akan bernilai 0
Tetapi kita juga bisa memberi ukuran vector dan menyeragamkan isinya dengan fungsi .assign()
. Contohnya seperti ini:
vector<int> v; v.assign(100,2); // v memiliki 100 elemen bernilai 2 cout << v.size() << endl; // output akan bernilai 100
Mengakses Elemen
Ketika vector telah memiliki ukuran (bukan 0), proses pengaksesan elemen sama seperti proses pengaksesan pada array biasa.
vector<int> v; v.assign(100, 2); cout << v[2] << endl; // elemen v di indeks 2 bernilai 2 // menampilkan elemen v dari indeks 10 hingga 19 for(int i=10;i<20;i++){ cout << v[i] << endl; v[i] += v[i-1] // operasi antar elemen }
Selain itu kita juga bisa mengakses elemen paling depan dan elemen paling belakang menggunakan .front()
dan .back()
:
vector<int> v; v.assign(100, 2); cout << v.front() << endl // sama dengan v[0] cout << v.back() << endl // sama dengan v[99]
Insert Elemen
Terdapat dua jenis proses pengisian elemen ke vektor. Yang pertama adalah penambahan elemen ke posisi paling belakang dari vektor (push). Ini bisa dilakukan ketika vektor masih kosong ataupun sudah terisi. Proses penambahan elemen ini menggunakan perintah .push_back()
vector<int> v; cout << v.size() << endl; // ukuran vektor v awalnya 0 v.push_back(3); // tambahkan angka 3 di belakang vektor v.push_back(1); // tambahkan angka 1 di belakang vektor v.push_back(7); // tambahkan angka 7 di belakang vektor cout << v.size() << endl; // ukuran vektor v sekarang 3 cout << v[2] << endl; // elemen dengan indeks kedua, yakni 7
Jika diperhatikan, pada proses push back ini terasa bagaimana dinamisnya array v
. Ukuran vector bertambah seiring bertambahnya elemen di dalamnya.
Cara kedua adalah dengan menyisipkan nilai di tengah-tengah vektor. Proses penyisipan dilakukan menggunakan fungsi .insert()
dengan pola:
v.insert(posisi_insert, nilai_yang_akan_diinsert)
Sebagai contoh misal kita ingin menambahkan angka 8 pada posisi ke 1 (disisipkan antara elemen ke-0 dan ke-1) dari contoh vector sebelumnya:
vector<int> v; v.push_back(3); // tambahkan angka 3 di belakang vektor v.push_back(1); // tambahkan angka 1 di belakang vektor v.push_back(7); // tambahkan angka 7 di belakang vektor v.insert(v.begin()+1, 8) // insert angka 8 di posisi 1
Apa maksudnya v.begin()+1
? jadi untuk beberapa fungsi vector, kita perlu menggunakan pointer untuk menunjuk suatu posisi. v.begin()
ini pointer yang menunjuk posisi pertama pada vector, mirip dengan penulisan v[0]
pada array (walau sebenernya tetep beda). Mudahnya, setiap akan insert posisi ke-i kita tuliskan v.begin()+i
🙂
Delete Elemen
Untuk delete elemen di tengah-tengah kita bisa gunakan fungsi .erase()
dengan pola
v.erase(posisi_delete)
Semisal kita ingin menghapus elemen di posisi 1 pada vector contoh di bawah (elemen bernilai 5) kita lakukan seperti berikut:
vector<int> v; v.push_back(3); // tambahkan angka 3 di belakang vektor v.push_back(5); // tambahkan angka 1 di belakang vektor v.push_back(1); // tambahkan angka 1 di belakang vektor v.push_back(7); // tambahkan angka 7 di belakang vektor v.erase(v.begin()+1) // menghapus elemen di posisi 1
Sekian tutorial singkatnya, semoga bermanfaat! Kode lengkap tutorial vector bisa diakses di sini: https://ideone.com/vqSzoh
Contoh Soal
Contoh soal programming yang menggunakan vector: