Anda di halaman 1dari 22

Standard

 Template  
Library  
(STL)  
Learning  Outcome  
•  Mahasiswa  dapat  menggunakan  STL  (Standard  Template  
Library)  CPP  
 
Outline  :  
-­‐  STL    
-­‐  Container  
-­‐  Iterator  
-­‐  Algorithm  

 
 
STL  
•  Standard  Template  Library  
•  Merupakan  kumpulan  library  yang  melengkapi  library  standard  C
++.  
•  Menyediakan  algoritma  dan  struktur  data  dasar  untuk  
permasalahan  komputasi  di  C++  
•  Berisi  kumpulan  class-­‐class  yang  umum  digunakan  dalam  
pengoperasian  struktur  data,  yakni  container,  algorithm,  dan  
iterator  
STL
Komponen  dari  STL:    
•  Container  :  struktur  data  untuk  menyimpan  elemen  data  
•  Sequence  Container  :  vector,  deque,  list  
•  AssociaJve  containers  :  set,  mulJset,  mulJmap,  map  
•  Container  adapters  :stack,  queue,  priority  queue  

•  Algorithm  :  berupa  fungsi-­‐fungsi  untuk  searching,  sorJng,  element  


comparison,  dan  operasi  manipulasi  lainnya  pada  container  
   
•  Iterator  :  pointer  untuk  elemen-­‐elemen  pada  container  
       Contoh  :  begin,  end,  rbegin,  rend  
STL  Container  
•  Adalah  sebuah  class,  data  structure,  atau  sebuah  ADT  
(Abstract  Data  Type)  yang  akan  menjadi  instance  dari  koleksi  
object  lain.  
•  Digunakan  untuk  menyimpan  elemen  berupa  object-­‐object  
dalam  bentuk  yang  terorganisasi  diikuJ  dengan  aturan  akses  
tertentu.  
STL  Container  
•  Sebuah  struktur  data  dapat  dipandang  sebagai  tempat  
penyimpanan  data  (container)  
•  Beberapa  hal  yang  dapat  dilakukan:  
•  Membuat  container  baru  (constructor)  
•  Menaruh  data  
•  Mengambil  data  
•  Mencari  data  tertentu  
•  Mengosongkannya  (atau  periksa  apakah  kosong)‫ ‏‬ 
•  Mendapatkan  jumlah  data  dalam  container  (size)  
Data

Container
STL  Container
•  Terdiri  dari  3  macam  
1. Sequence  containers  =>  Container  yang  elemennya  tersusun  
berderet-­‐deret  
2. AssociaJve  containers  =>  merupakan  container  yang  key-­‐nya  
diasosiasikan  dengan  suatu  value.  
3. Container  adapters  =>  merupakan  container  dengan  operasi  
spesifik,  memanfaatkan  Jpe  container  lain  untuk  
implementasinya  
Sequence  Container
Container  Jpe  ini  menyusun  
elemen  data  secara  sekuensial/
berderet  
• Vector   :   inserJon   dan   deleJon  
dilakukan   pada   elemen   terakhir,  
akses   dapat   dilakukan   pada   seJap  
elemen.    
• Deque   :   inserJon   dan   deleJon  
pada   elemen   pertama   ataupun  
elemen   terakhir,   akses   dapat  
dilakukan  pada  seJap  elemen  
• List   :   berupa   doubly   linked   list,  
inserJon   dan   deleJon   dapat  
dilakukan  dari  posisi  manapun  
Associative  Containers
•  Container  Jpe  ini  menyimpan  dan  mengambil  elemen  
data  menggunakan  suatu  key  (sering  disebut  search  
keys)  
•  Terdiri  dari  :  
•  Set/MulJset  :  SeJap  elemen  pada  container  adalah  key  
sekaligus  sebagai  value  
•  Map/MulJmap  :  SeJap  elemen  pada  container  terdiri  dari  
pasangan  key  dan  value  
Set/Multiset  
•  Set  :  rapid  lookup,  no  duplicates  allowed  
•  MulJset  :  rapid  lookup,  duplicates  allowed  
 
Map/Multimap  
•  Map  :  one-­‐to-­‐one  mapping,  no  duplicates  allowed,  rapid  
key-­‐based  lookup  
•  MulJmap  :one-­‐to-­‐many  mapping,  duplicates  allowed,  
rapid  key-­‐based  lookup  
Container  adapters
Yakni  container  yang  implementasinya  menggunakan  Jpe  
container  lainnya    
• Stack  
 last-­‐in,  first-­‐out  (LIFO),  dapat  diimplementasikan  
menggunakan  vector,  list  maupun  deque  (default)  
• Queue  
 first-­‐in,  first-­‐out  (FIFO),  diimplementasikan  menggunakan  
list  atau  deque  (default)  
• Priority_queue  
 inserJon  dan  deleJon  sesuai  urutan  prioritas  -­‐>  heap  
tree,  diimplementasikan  menggunakan  deque  atau  vector  
(default)  
Deklarasi  Vector  
•  Membuat  vector  kosong  
vector<int> v1;
•  Mengisi  vector  dengan  empat  nilai  100  
vector<int> v2 (4,100);  
•  Membuat  vektor  v4  yang  isinya  sama  dengan  v2  
   vector<int> v4 (v2);  
•  Membuat  vector  v5  yang  isinya  sama  dengan  array  myints  
int myints[] = {16,2,77,29};
vector<int> v5(myints, myints + sizeof(myints) /
sizeof(int) );

//parameter 1 : alamat awal, yakni myints


//parameter 2 : alamat akhir, yakni myints+ ukuran myints(8
byte)/ukuran int (2byte) atau 8/2=4

 
Vector  Operations  
#include <iostream>
#include <vector> Output:  
using namespace std; 3  1  2  
int main() {  
 
vector<int> vec;
int i;
Bagaimana  membuat  vector  berisi  float  
vec.push_back(3);
vec.push_back(1); 0.5      1    2  2.5  
vec.push_back(2); serta  menampilkannya  di  layar?  

for (i=0; i<vec.size(); i++)


cout << " " << vec[i];
}
Deque  Operations  
#include <iostream>
#include <deque>
Output:  
using namespace std;
1  3  2  
int main() {  
deque<int> dq;  
int i;
Apa  bedanya  dengan  vector?  
dq.push_back(3);
dq.push_front(1);
dq.push_back(2);

for (i=0; i<dq.size(); i++)


cout << " " << dq[i];
}
STL  Iterator  
•  STL  Container  menyediakan  fungsi  begin  dan  end  
•  Fungsi  begin  mengembalikan  iterator  yang  menunjuk  elemen  
awal  container  
•  Fungsi  end  mengembalikan  iterator  yang  menunjuk  elemen    
setelah  elemen  terakhir  pada  container  (an  element  that  
doesn’t  exist)    
•  Jika  iterator  i  menunjuk  suatu  elemen,  maka  ++i  menunjuk  
“next”  element  dan  *i  adalah  elemen  yang  ditunjuk  oleh  i  
Iterator  pada  vector  
#include <iostream>
#include <vector>
Output:  
using namespace std;
1  2  3  4  5  
int main ()  
{ vector<int> vec;  
vector<int>::iterator it;

for (int i=1; i<=5; i++)


vec.push_back(i);

for(it=vec.begin(); it!=vec.end(); ++it)


cout << ' ' << *it;
return 0;
}
STL  Algorithm  
•  STL  menyediakan  banyak  fungsi  algorithm  yang  dapat  
dipanggil  untuk  melakukan  manipulasi  pada  container  
•  MelipuJ  operasi  inserJng,  deleJng,  searching  ,  sorJng,  dan  
operasi  lain  pada  container  
•  Iterator  sering  digunakan  sebagai  return  value  sebuah  fungsi  
algorithm  
•  MutaJng-­‐sequence  algorithms  :  algorithm  yang  menyebabkan  
perubahan  pada  susunan  elemen  di  container.  Contoh  :  fill,  
reverse,  remove,  replace,  rotate,  swap,  dll  
•  Nonmodifying  sequence  algorithm  :  algorithm  yang  tak  
menyebabkan  perubahan  elemen  pada  container.  Contoh  :  
search,  count,  find,  equal,  mismatch,  dll  
Set  Operations  
#include <iostream>
#include <set>
int main()
{ using namespace std;
set<int> myset;
myset.insert(7);
myset.insert(2);
myset.insert(-6);
myset.insert(-5);

set<int>::const_iterator it; // declare an iterator


it = myset.begin(); // assign it to the start of the set
while (it != myset.end()) // while it hasn't reach the end
{
cout << *it << " ";
++it; // iterate to the next element
} cout << endl; }
Multimap  Operations  
#include <iostream>
#include <map>
#include <string>
int main()
{ using namespace std;
multimap<int, string> mymap;
mymap.insert(make_pair(2, "orange"));
mymap.insert(make_pair(1, "banana"));
mymap.insert(make_pair(1, “grape"));
multimap<int, string>::const_iterator it;
it = mymap.begin();
while (it != mymap.end()) // while it hasn't reach the end
{
cout << it->first << "=" << it->second << " ";
++it; // and iterate to the next element
}
cout << endl; }
Stack  Operations  
#include <iostream>
#include <stack> /*  Output:  
using namespace std; 6  
int main () 5  
{ */  
stack<int> s;  
s.push(8);
s.push(5);
s.push(6);
cout << s.top() << endl;
s.pop();
cout << s.top() << endl;
return 0;
}
Queue  Operations  
#include <iostream>
#include <queue>
using namespace std;
int main ()
/*  Output:  
{ 8  
queue<int> q; 5  
q.push(8); */  
q.push(5);  
q.push(6);
cout << q.front() << endl;
q.pop();
cout << q.front() << endl;
return 0;
}

Anda mungkin juga menyukai