Standard Template Library Di C++

March 27, 2012 at 1:21 am Leave a comment

Jika di bahasa pemograman Java ada struktur data seperti java.util.List danjava.util.Map, maka di C++ ada Standard Template Library (STL) yang menyediakan fasilitas serupa. Selain menyediakan struktur data dalam bentuk class, STL juga memiliki sekumpulan algoritma yang siap dipakai, seperti algoritma pencarian dan pengurutan.

Komponen utama STL terdiri atas:

  • Containers – dipakai untuk menyimpan kumpulan data.
  • Iterators – dipakai untuk menjelajahi setiap data individu yang berada dalam containers.
  • Algorithms – dipakai untuk memproses data di dalam containers, seperti mencari data atau mengurutkan data.

Container

Ada dua jenis containers yang disediakan oleh STL, yaitu:

  • Sequence containers – setiap elemen di dalam containers ini memiliki urutan yang pasti. Yang masuk dalam kategori ini adalah vectordeque, dan list.
  • Associative containers – urutan tidak penting dalam containers ini. Yang masuk dalam kategori ini adalah setmultisetmap,dan multimap.

Container vector menyimpan elemennya dalam bentuk array dinamis. vectormemungkinkan akses secara acak untuk setiap elemen di dalamnya (random access), tidak harus selalu mulai dari awal (sequential). Menulis dan menghapus elemen pada bagian akhir sebuahvector berlangsung cepat, jika dibandingkan dengan menyisipkan atau menghapus elemen di tengah-tengah dan di awal vector.

Container deque (double-ended queue) menyimpan elemennya dalam bentuk array dinamis yang dapat bertambah dari elemen paling awal maupun dari elemen paling akhir. Dengan demikian, operasi menulis atau menghapus elemen pada bagian paling awal maupun paling akhir dapat berlangsung dengan cepat.

Container list menyimpan elemennya dalam bentuk double linked-list, dimana setiap elemen-nya memiliki referensi ke elemen sebelum dan elemen sesudahnya. Dengan demikian, setiap elemen di dalam list tidak dapat diakses secara acak, melainkan harus berurut berdasarkan elemen sebelumnya atau sesudahnya. Kelebihan list adalah penambahan dan penghapusan elemen dapat berlangsung dengan cepat di posisi manapun.

Pada container set, setiap elemen akan diurutkan berdasarkan nilainya, dan tidak boleh ada nilai yang ganda/duplikat.

Container multiset sama seperti set, hanya saja container ini memungkinkan beberapa elemen untuk memiliki nilai yang sama.

Container map menyimpan elemennya dalam bentuk pasangan key/value. Setiap elemen memiliki key yang dijadikan basis pengurutan. Tidak boleh key yang ganda/duplikat di map.

Container multimap sama seperti map, hanya saja container ini memungkinkan beberapa elemen untuk memiliki key yang sama.

Iterator

Iterator adalah object yang dipakai untuk menjelajahi elemen dalam container. Iterator menyediakan operator seperti:

  • Operator * – untuk mendapatkan elemen yang sedang berada di posisi saat ini.
  • Operator ++ – untuk menjelajahi ke elemen berikutnya.
  • Operator == dan != – untuk perbandingan apakah dua iterator sedang merujuk ke posisi yang sama.
  • Operator = – untuk mengubah posisi yang sedang dirujuk iterator.

C++ memungkinkan kita untuk mengubah makna operator bagi sebuah object, dan STL mengubah operator yang biasanya dipakai untuk pointer.

Setiap container menyediakan dua jenis iterator, yaitu:

  1. container::iterator – untuk melakukan navigasi dalam modus baca/tulis.
  2. container::const_iterator – untuk melakukan navigasi dalam modus hanya baca saja.

Berikut ini adalah contoh penggunaan iterator:
list::iterator pos;
for (pos = coll.begin(); pos != coll.end(); ++pos) {
... // proses setiap elemen disini
}

Algorithms

Walaupun algorithms mem-proses elemen dalam container, mereka tidak secara langsung berhadapan dengan container, melainkan melalui iterator. Dengan design seperti ini, satu algoritma dapat didefinisikan hanya sekali saja, tetapi bekerja untuk banyak jenis container. Beberapa contoh algorithms misalnya: min_element()max_element()sort(), danfind().

Entry filed under: Pemograman C++. Tags: .

Program Chatting dengan C# Kumpulan Library C/C++

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Trackback this post  |  Subscribe to the comments via RSS Feed


JAM

Admin

Categories

Recent Posts

DATE

Blog Stats

  • 3,258 hits

%d bloggers like this: