Lihatlah Efektif STL oleh Scott Meyers. Ada baiknya menjelaskan cara menggunakan STL.
Jika Anda ingin menyimpan sejumlah objek yang ditentukan / tidak ditentukan dan Anda tidak akan pernah menghapusnya, maka vektorlah yang Anda inginkan. Ini adalah pengganti default untuk array C, dan berfungsi seperti itu, tetapi tidak meluap. Anda dapat mengatur ukurannya sebelumnya juga dengan cadangan ().
Jika Anda ingin menyimpan jumlah objek yang tidak ditentukan, tetapi Anda akan menambahkan dan menghapusnya, maka Anda mungkin menginginkan daftar ... karena Anda dapat menghapus elemen tanpa memindahkan elemen berikut - tidak seperti vektor. Namun, dibutuhkan lebih banyak memori daripada vektor, dan Anda tidak dapat mengakses elemen secara berurutan.
Jika Anda ingin mengambil banyak elemen dan hanya menemukan nilai unik dari elemen tersebut, membacanya semuanya menjadi satu set akan melakukannya, dan itu akan mengurutkannya untuk Anda juga.
Jika Anda memiliki banyak pasangan nilai kunci, dan Anda ingin mengurutkannya berdasarkan kunci, maka peta itu berguna ... tetapi itu hanya akan menampung satu nilai per kunci. Jika Anda membutuhkan lebih dari satu nilai per kunci, Anda bisa memiliki vektor / daftar sebagai nilai Anda di peta, atau menggunakan multimap.
Itu tidak ada di STL, tetapi ada di pembaruan TR1 ke STL: jika Anda memiliki banyak pasangan nilai kunci yang akan Anda cari dengan kunci, dan Anda tidak peduli dengan pesanan mereka, Anda mungkin ingin menggunakan hash - yaitu tr1 :: unordered_map. Saya telah menggunakannya dengan Visual C ++ 7.1, di mana ia disebut stdext :: hash_map. Ini memiliki pencarian O (1) bukan pencarian O (log n) untuk peta.