Mengenal Vector pada C++ - nblognlife

Mengenal Vector pada C++

Contoh Program Vector pada C++

     
Vector adalah suatu class template yang merupakan bagian dari STL (Standard Template Library) dan dapat digunakan untuk menggantikan array.  Sama dengan array, vector juga menyimpan elemen-elemen secara bersebelahan dan elemen tesebut dapat diakses sesuai subscript/index.

Apa kelebihan vector?
     Ukuran vector dapat berubah secara dinamis dan dengan pengalokasian memori yang ditangani secara otomatis oleh vector itu sendiri. Vector umumnya digunakan pemrogram karena alasan fleksibilitas (dalam hal ukuran) dan kecepatannya.
     Berbeda jika menggunakan array, apabila kita membuat 10 elemen dengan pernyataan a[10] maka ketika program sedang dijalankan dan ukuran yang digunakan tidak mencukupi maka kita harus menghentikan program, mengganti ukuran array, kemudian menjalankan program lagi. Hal tersebut tentunya membuat pekerjaan menjadi tidak efesien. Kita sebenarnya juga bisa membuat variabel dinamis dari awal untuk menangani hal tersebut (mengalokasikan memori saat runtime), namun di sini saya sedang membicarakan tentang array pada umumnya.

Untuk menggunakan vector pada C++ kita perlu menyertakan header <vector>.
Bentuk pendeklarasian vector:
vector <type> nama_variabel (jumlah_elemen);
*jumlah elemen bersifat opsional

Contoh:
vector <int> a;
> mendeklarasikan sebuah vector yang digunakan untuk menyimpan data bertipe integer  .
vector <int> b (5);
> mendeklarasikan sebuah vector dengan space memory untuk 5 data bertipe integer.

Bentuk penginisialisasian vector:
vector <float> c (10, 2.0)
> mendeklarasikan sebuah vector dengan space memori untuk 10 data bertipe float, dan menginisialisasi masing-masing nilai elemennya dengan 2.0.
vector <float> d(c);
> vector d diberi nilai sama dengan vector c. Duplikasi.

vector <int> e = {7, 5, 16, 8} /*hanya dapat digunakan jika compiler mendukung c++11*/

*Inisialisasi vector juga dapat dilakukan dengan memanfaatkan array. Lihat pada contoh program 2!

     Untuk fungsi-fungsi vector yang lain akan digunakan langsung dalam program dan akan dijelaskan di bagian akhir. Berikut adalah program sederhana penggunaan vector pada C++:
Program 1
/*
      Mengenal Vector pada C++
      Microsoft Visual Studio Express 2012
      [RS]
*/
#include <iostream>
#include <vector>
#include <conio.h>
using namespace std;

int main()
{
      vector<int> vec;
      vector<int>::iterator it;

      cout<<"VECTOR 1 C++"<<endl;
      cout<<"------------"<<endl;

      ////////////////////////////////////
      ////////////////////////////////////
      //menambahkan elemen ke dalam vector
      //nb: bisa menggunakan perulangan
      cout<<"\nPUSH_BACK : 1,2,3,4,5"<<endl;
      cout<<"---------------------"<<endl;
      vec.push_back(1);
      vec.push_back(2);
      vec.push_back(3);
      vec.push_back(4);
      vec.push_back(5);

      ///////////////////////////////////
      //menampilkan seluruh isi vector dengan index
      cout<<"Menampilkan seluruh isi vector dengan index: "<<endl;
      for(int i = 0; i < vec.size(); i++)
      {
            cout<<vec[i]<<"  ";
      }
      cout<<endl;
     
      ///////////////////////////////////
      //menampilkan seluruh isi vector menggunakan fungsi at()
      cout<<"\nMenampilkan seluruh isi vector menggunakan fungsi at(): "<<endl;
      for(int i = 0; i < vec.size(); i++)
      {
            cout<<vec.at(i)<<"  ";
      }
      cout<<endl;
     
      ///////////////////////////////////
      //Menampilkan seluruh isi vector menggunakan iterator
      cout<<"\nMenampilkan seluruh isi vector menggunakan iterator: "<<endl;
      for(it = vec.begin(); it != vec.end(); it++)
      {
            cout<<*it<<"  ";
      }
      cout<<endl;
      cout<<endl;

      ///////////////////////////////////
      ///////////////////////////////////
      //mengambil/menghapus elemen vector paling belakang
      cout<<"\nPOP_BACK : 4,5"<<endl;
      cout<<"--------------"<<endl;
      vec.pop_back();
      vec.pop_back();

      cout<<"Isi vector saat ini: "<<endl;
      for(int i = 0; i < vec.size(); i++)
      {
            cout<<vec[i]<<"  ";
      }
      cout<<endl;

      //////////////////////////////////
      /////////////////////////////////
      //menghapus semua isi vector
      cout<<"\nMENGOSONGKAN VECTOR"<<endl;
      cout<<"-------------------"<<endl;
      vec.clear();
     
      cout<<"Isi vector saat ini: "<<endl;
      if(vec.size() != 0)
      {
            for(int i = 0; i < vec.size(); i++)
            {
                  cout<<vec[i]<<"  ";
            }
      }else
      {
            cout<<"<kosong>";
      }
      cout<<endl;

      _getche();
      return 0;
}

Output
VECTOR 1 C++
------------

PUSH_BACK : 1,2,3,4,5
---------------------
Menampilkan seluruh isi vector dengan index:
1  2  3  4  5

Menampilkan seluruh isi vector menggunakan fungsi at():
1  2  3  4  5

Menampilkan seluruh isi vector menggunakan iterator:
1  2  3  4  5


POP_BACK : 4,5
--------------
Isi vector saat ini:
1  2  3

MENGOSONGKAN VECTOR
-------------------
Isi vector saat ini:
<kosong>

Program 2
/*
      Mengenal Vector pada C++
      Microsoft Visual Studio Express 2012
      [RS]
*/
#include <iostream>
#include <vector>
#include <conio.h>
using namespace std;

int main()
{
      int arr[] = {25,10,53,64,65,96,17};
      //melakukan inisialisasi vector dengan array
      vector<int> vtr(arr, arr + sizeof(arr)/sizeof(int));

      cout<<"VECTOR 2 C++"<<endl;
      cout<<"------------"<<endl;
      cout<<"Isi vector : ";
      for(int i = 0; i < vtr.size(); i++)
      {
            cout<<vtr[i]<<"  ";
      }
      cout<<endl;
      cout<<"\nUkuran             : "<<vtr.size()<<endl;
      cout<<"Kapasitas          : "<<vtr.capacity()<<endl;
      cout<<"Elemen terdepan    : "<<vtr.front()<<endl;
      cout<<"Elemen terbelakang : "<<vtr.back()<<endl;
      cout<<"Elemen ke-3        : "<<vtr.at(2)<<endl;
     
      //////////////////////////////////////
      //////////////////////////////////////
      //RESIZE VECTOR
      cout<<endl;
      cout<<"\nRESIZE VECTOR"<<endl;
      cout<<"-------------"<<endl;
      //menambah ukuran vector menjadi 10 dan mengisi tiga elemen tambahan dengan nilai 0
      vtr.resize(10,0);

      cout<<"Isi vector sekarang : ";
      for(int i = 0; i < vtr.size(); i++)
      {
            cout<<vtr[i]<<"  ";
      }
      cout<<endl;
      cout<<"\nUkuran sekarang    : "<<vtr.size()<<endl;
      cout<<"Kapasitas sekarang : "<<vtr.capacity()<<endl;

      /////////////////////////////////////
      /////////////////////////////////////
      //Menghapus 5 elemen pertama
      cout<<endl;
      cout<<"\nMENGHAPUS LIMA ELEMEN PERTAMA"<<endl;
      cout<<"-----------------------------"<<endl;

      vtr.erase(vtr.begin(), vtr.begin()+5);
      cout<<"Isi vector sekarang : ";
      for(int i = 0; i < vtr.size(); i++)
      {
            cout<<vtr[i]<<"  ";
      }
     
      _getche();
      return 0;
}

Output
VECTOR 2 C++
------------
Isi vector : 25  10  53  64  65  96  17

Ukuran             : 7
Kapasitas          : 7
Elemen terdepan    : 25
Elemen terbelakang : 17
Elemen ke-3        : 53


RESIZE VECTOR
-------------
Isi vector sekarang : 25  10  53  64  65  96  17  0  0  0

Ukuran sekarang    : 10
Kapasitas sekarang : 10


MENGHAPUS LIMA ELEMEN PERTAMA
-----------------------------
Isi vector sekarang : 96  17  0  0  0

Keterangan
push_back : menambah elemen di akhir
pop_back   : menghapus elemen terakhir
size             : menampilkan jumlah elemen pada vector
begin          : mengembalikan iterator ke awal vector
end             : mengembalikan iterator ke akhir vector
clear           : menghapus isi vector
capacity     : menampilkan jumlah elemen yang dapat ditampung oleh vector
front           : mengakses elemen pertama
back           : mengakses elemen terakhir
at                : mengakses elemen tertentu
erase          : menghapus elemen

[RS]

Klik Like & Share jika postingan ini bermanfaat
Apa tanggapan Anda?

Berikan tanggapan Anda melalui kolom komentar yang telah disediakan.
- Gunakan bahasa yang sopan;
- Saat menjadikan postingan pada blog ini sebagai referensi, jangan lupa mencantumkan sumbernya (link dari blog ini).

Jika blog ini bermanfaat jangan lupa memberikan 'like' atau 'share' untuk mendapatkan update terbaru.

Terima kasih