Transcript STL

Standard Template Library
STL
STL
 STL => Standard Template Library
 Adalah merupakan kumpulan library yang melengkapi library
standard C++.
 Berisi kumpulan class-class yang umum digunakan, seperti
container, algorithm, dan iterator.
 Menyediakan algoritma dan struktur data dasar untuk
permasalahan komputasi.
STL
STL (meliputi)
 Container
 Sequence Container : vector, deque, list
 Associative containers : set, multiset, multimap, map
 Container adapters :stack, queue, priority queue
 Algorithm :
equal, mismatch, lexicographical_compare, remove,
remove_if, replace, replace_if, random_shuffle, count,
count_if, min_element, max_element, accumulate, for_each
, dll
 Iterator
Container
 Adalah sebuah class, data structure, atau sebuah ADT
(abstract Data Type) yang akan menjadi instance dari koleksi
object lain.
 Digunakan untuk menyimpan object-object dalam bentuk
yang terorganisasi diikuti dengan aturan akses tertentu.
Container
 Sebuah struktur data dapat dipandang sebagai
Container
Data
tempat penyimpanan benda (container).
 Beberapa hal yang dapat dilakukan:
 Membuat container baru(konstruktor)
 Menaruh benda
 Mengambil benda
 Mencari benda tertentu
 Mengosongkannya (atau periksa apakah
kosong)
 Mendapatkan jumlah benda dalam
container (size)
Container
 Terdiri dari 3 macam
 Sequence containers => Container yang tersusun berdere-
deret.
 Associative containers => merupakan container yang keynya diasosiasikan dengan suatu value.
 Container adapters => merupakan containers dengan
interface spesifik, memanfaatkan containers lain untuk
implementasinya.
Sequence containers
 vector
rapid insertions and deletions at back direct access to any
element
 deque
rapid insertions and deletions at front or back direct access to
any element
 list
doubly linked list, rapid insertion and deletion anywhere
Associative containers
 set
rapid lookup, no duplicates allowed
 multiset
rapid lookup, duplicates allowed
 map
one-to-one mapping, no duplicates allowed, rapid key-based
lookup
 multimap
one-to-many mapping, duplicates allowed, rapid key-based
lookup
Container adapters
 stack
last-in, first-out (LIFO)
 queue
first-in, first-out (FIFO)
 priority_queue
highest-priority element is always the first element out
Container: List
Indeks
1
2
3
4
 Sebuah List adalah kumpulan benda di mana setiap benda memiliki
posisi.
 Setiap benda dalam List dapat diakses melalui indeks-nya.
 Contoh paling gampang: array!
Container: Vector
Indeks
1
2
3
4
 Sebuah Vector adalah kumpulan benda di mana setiap benda memiliki
posisi dan size-nya dinamis.
 Setiap benda dalam List dapat diakses melalui indeks-nya.
 Contoh paling gampang: dynamic array!
Vector - Overview of functions
 informative
 vector::front - Returns reference to first element of vector.
 vector::back - Returns reference to last element of vector.
 vector::size - Returns number of elements in the vector.
 vector::empty - Returns true if vector has no elements.
 vector::capacity - Returns current capacity (allocated memory)
of vector.
Vector - Overview of functions
 standard operations
 vector::insert - Inserts elements into a vector (single & range), shifts




later elements up. O(n) time.
vector::push_back - Appends (inserts) an element to the end of a
vector, allocating memory for it if necessary. Amortized O(1) time.
vector::erase - Deletes elements from a vector (single & range), shifts
later elements down. O(n) time.
vector::pop_back - Erases the last element of the vector, O(1) time.
Does not usually reduce the memory overhead of the vector.
Amortized O(1) time.
vector::clear - Erases all of the elements. (For most STL
implementations this is O(n) time and does not reduce capacity)
Vector - Overview of functions
 allocation/size modification
 vector::reserve - Changes capacity (allocates more memory) of
the vector, if needed. In many STL implementations capacity
can only grow, and is never reduced. O(n) if the vector expands.
O(1) if not.
 vector::resize - Changes the vector size. O(n) time.
Vector - Overview of functions
 iteration
 vector::begin - Returns an iterator to start traversal of the
vector.
 vector::end - Returns an iterator that points just beyond the
end of the vector.
Container : Stack
push
pop,top
Most
recent
Least
recent
 Sebuah Stack adalah kumpulan benda di
mana hanya benda yang most recently
inserted dapat diakses.
 Bayangkan setumpuk koran.
 Benda yang paling terakhir ditambahkan
ditaruh di atas tumpukan (top).
 Operasi pada Stack membutuhkan waktu
konstan (O(1)).
Container : Queue
enqueue
dequeue
getFront
Most recent
Least recent
 Sebuah Queue adalah kumpulan benda di mana hanya benda yang least recently
inserted dapat diakses.
 Bayangkan antrian printer job pada jaringan.
 Benda yang paling awal ditambahkan berada di depan antrian (front).
 Operasi pada Queue membutuhkan waktu konstan (O(1)).
Container : Set
tambah
 Set adalah struktur data yang tidak mengizinkan duplikasi data.
 Bandingkan dengan struktur data lain yang mengizinkan kita menyimpan dua
data yang sama.
 Bayangkan peserta kuliah ini: Setiap peserta unik, tidak ada yang terdaftar
dua kali!
Container : Map
Nama:
Abdul
Betty
Chairul
Dian
Nilai:
 Map adalah struktur data yang berisi sekumpulan pasangan nama (keys) dan nilai
(values) dari nama tersebut.
 Nama (Keys) harus unik, tapi nilai (values) tidak.
 Bayangkan basis-data yang berisi informasi peserta kuliah. Apa yang menjadi “nama”
(keys)?
Map – member functions
Container : Priority Queue
insert
deleteMin
findMin
Highest
priority
 Priority Queue adalah struktur data queue yang tiap elemen data dapat miliki nilai
prioritas. Data dengan nilai prioritas tertinggilah yang dapat diakses terlebih dulu.
 Bayangkan sebuah antrian pada printer jaringan. Misalkan ada sebuah permintaan cetak
untuk 100 halaman hanya beberapa detik lebih awal dari permintaan cetak selembar
halaman.
STL : Algorithm
 Sebuah method yang efektif untuk problem solving yang
dinyatakan/diungkapkan dalam rangkaian/rentetan instruksi
yang terbatas.
 Digunakan untuk melakukan kalkulasi, data processing
Iterator
 Sebuah object yang mengizinkan programmer melintasi
semua element data dari sebuah collection, tanpa
memperhatikan bagaimana sebuah collection
diimplementasikan
 Objek iterator mengendalikan iterasi pembacaan data pada
collection c.
 Secara umum Iterator bekerja sebagai berikut:



Mulai dengan mengatur iterator pada elemen pertama pada
collection.
Satu-persatu berlanjut pada elemen selanjutnya
Berakhir ketika tidak ada lagi elemen pada collection yang
belum dibaca.
Ilustrasi: Iterator
Iterator
Collection
User
(program yang
mengakses data)