struktur data vector

Tutorial Struktur Data Vector pada C++

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:

About the author

Rian Adam

Lecturer at Universitas Islam Indonesia; Machine Learning Enthusiast

View all posts

Leave a Reply