Vector

Vector yang akan kita bahas kali ini berbeda dengan vector dalam matematika dan fisika. Vector yang akan kita bahas adalah salah satu template container yang terdapat di dalam STL (Standard Template Library).

Vector mengalokasikan memori secara dinamis sehingga isinya bisa terus ditambah sesuai batas memori komputer. Data baru hanya bisa ditambahkan setelah data terakhir di dalam vector seperti saat menggunakan stack. 

Berbeda dengan stack yang hanya bisa diakses data terakhirnya, vector bisa diakses semua datanya dengan method at. Selain itu, kalian juga bisa menampilkan atau mengubah isi dari data yang sudah ditambahkan. Data di dalam vector bisa diakses dengan indeks dan kurung kotak seperti array. 

Untuk menggunakan vector kalian bisa menambahkan "#include <vector>". Berikut ini adalah contoh kode programnya.

#include <iostream>
#include <vector>

using namespace std;

int main(){
vector<int> vektor;

    //Isi vektor
    vektor.push_back(1);
    vektor.push_back(2);
    vektor.push_back(3);
    vektor.push_back(4);

    vektor.insert(vektor.begin(), 5);
    vektor[2]=7;

    cout << "Jumlah data : " << vektor.size();
    cout << endl;
    
    cout << "Kapasitas : " << vektor.capacity();
    cout << endl;
    
    cout << "Isi : ";
    cout << vektor.at(0) << " ";
    cout << vektor.at(1) << " ";
    cout << vektor.at(2) << " ";
    cout << vektor.at(3) << " ";
    cout << vektor.at(4) << " ";
    
    vektor.clear();//Bersihkan vektor

    return 0;
}
Output
Jumlah data : 5
Kapasitas : 8
Isi : 5 1 7 3 4

Contoh kode program di atas menggunakan vector dengan tipe data int. Tipe data pada deklarasi vector diapit dengan tanda "<" dan ">". Pada kode program di atas, kita menambahkan data pada vector dengan menggunakan function push_back dan menampilkannya dengan menggunakan cout. 

Isi dari vector bisa diakses dengan cara yang sama seperti array, yaitu menggunakan tanda "kurung kotak". Selain itu, kita bisa juga menggunakan at. "vector<int> vektor" bisa diganti dengan "vector<tipe_data> nama_variabel". Kalian bisa menggunakan vector dengan tipe data lain selain tipe data int.

Menampilkan Semua Data

Untuk menampilkan beberapa data sekaligus, kalian membutuhkan iterator yang digeser posisi pointernya dengan operator increment (++) di dalam for. Kalian juga membutuhkan method begin dan end untuk menampilkan data sesuai urutan aslinya. Jika kalian ingin menampilkan data secara terbalik, kalian membutuhkan method rbegin dan rend.

#include <iostream>
#include <vector>

using namespace std;

int main(){
    vector<float> vektor(2, 2.5);
    for (int i = 1; i <= 5; i++)
        vektor.push_back(i);
        
    vektor[1]=5;
    vektor.resize(10);
    
    cout << "Data : ";
    for (auto p = vektor.begin(); p != vektor.end(); ++p)
        cout << *p << " ";
    cout << endl;
    
    cout << "Data (terbalik) : ";
    for (auto p = vektor.rbegin(); p != vektor.rend(); ++p)
        cout << *p << " ";

    return 0;
}
Output
Data : 2.5 5 1 2 3 4 5 0 0 0
Data (terbalik) : 0 0 0 5 4 3 2 1 5 2.5

Pada deklarasi di atas, "vector<float> vektor(2, 2.5);" berguna untuk membuat vector bertipe float dengan data sebanyak 2 dan nilai dari data-data tersebut adalah angka dengan nilai 2.5. Kemudian, kita menambahkan datanya dengan menggunakan method push_back. 

Method untuk Vector

Beberapa method yang biasa digunakan dalam vector adalah sebagai berikut :

  1. push_back => Menambahkan data.
  2. pop_back => Menghapus data paling akhir.
  3. insert => menambahkan data baru setelah posisi tertentu.
  4. erase => Menghapus data di posisi atau rentang tertentu.
  5. at => Menunjukan nilai dari data yang terdapat dalam vector pada posisi tertentu.
  6. front => Menunjukkan nilai data pada elemen pertama dalam vector. 
  7. back => Menunjukkan nilai data pada elemen terakhir dalam vector.
  8. size => Mengembalikan nilai berupa ukuran vector.
  9. capacity => Mengembalikan ukuran yang sebenarnya sudah dialokasikan untuk vector.
  10. max_size => Mengembalikan ukuran maksimum yang bisa dicapai vector berdasarkan batasan sistem disaat memori masih tersedia.
  11. resize => Mengubah ukuran vector
  12. clear => Mengosongkan vector
  13. begin => Mengembalikan iterator berupa pointer yang menunjuk nilai pertama dari vector.
  14. end => Mengembalikan iterator berupa pointer yang menunjuk akhir dari vector.
  15. rbegin => Mengembalikan akhir dari reverse iterator berupa pointer.
  16. rend => Mengembalikan awal dari reverse iterator berupa pointer.
Kalian juga bisa menggunakan swap untuk menukar isi vector dengan vector lain yang isinya punya tipe data sejenis.