C++ memiliki library standard berupa template yang umumnya digunakan dalam sebuah aplikasi, seperti vector, list, map dan stack. Dasar dari pembuatan template C++ bisa dilihat di posting sebelumnya tentang konsep pemrograman generik di C++.
STL C++ terdiri dari 3 komponen:
- Algoritma –> berlaku sebagai Container yang melakukan inisialisasi, sorting, searching dan transforming sebuah content
- Container –> mengatur sekumpulan object yang berbeda tipe. Contoh Container: Vector, List, Map, Stack
- Iterator –> digunakan untuk menelusuri setiap elemen dalam object. Algoritma menggunakan iterator untuk berinteraksi dengan object yang tersimpan dalam container
Berikut ini contoh penggunaan STL Vector, container yang mirip dengan array berisi object yang mampu mengubah panjangnya secara otomatis pada run time.
#include <iostream>
#include <vector>
using namespace std;
int main() {
// Buat object instance vec untuk menyimpan data integer
vector<int> vec;
int i;
// Tampilkan ukuran awal vec
cout << "vector size = " << vec.size() << endl;
// masukan 5 values ke dalam vector
for(i = 0; i < 5; i++){
vec.push_back(i);
}
// Tampilkan perubahan ukuran vec
cout << "extended vector size = " << vec.size() << endl;
// Akses 5 values dari vector
for(i = 0; i < 5; i++){
cout << "value of vec [" << i << "] = " << vec[i] << endl;
}
// Gunakan iterator untuk akses values
vector<int>::iterator v = vec.begin();
while( v != vec.end()) {
cout << "value of v = " << *v << endl;
v++;
}
return 0;
}
Output:
vector size = 0
extended vector size = 5
value of vec [0] = 0
value of vec [1] = 1
value of vec [2] = 2
value of vec [3] = 3
value of vec [4] = 4
value of v = 0
value of v = 1
value of v = 2
value of v = 3
value of v = 4
Penjelasan lebih lanjut tentang library Vector dapat dilihat di https://www.tutorialspoint.com/cpp_standard_library/vector.htm
Berikut ini contoh penggunaan STL Algorithm. STL Algoritm berisi sekumpulan function yang digunakan pada range elemen.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main ()
{ int myints[] = {20,10,40,5,15};
vector<int> v(myints,myints+5); //sediakan 6 elemen dalam vector v
make_heap (v.begin(),v.end()); //atur elemen di dalam heap
// Tampilkan elemen terbesar
cout << "initial max heap : " << v.front() << '\n';
// tukar value di posisi first dan value di posisi last-1 lalu
// buat subrange [first, last-1) dalam max heap
pop_heap (v.begin(),v.end());
// hapus elemen terakhir dari vector dan kurangi satu ukuran vektor
v.pop_back();
cout << "max heap after pop : " << v.front() << '\n';
// masukan elemen 100 ke dalam Vector lalu tambah satu ukuran vector
v.push_back(100);
push_heap (v.begin(),v.end());
cout << "max heap after push: " << v.front() << '\n';
sort_heap (v.begin(),v.end());
cout << "final sorted range :";
for (unsigned i=0; i<v.size(); i++)
cout << ' ' << v[i];
cout << '\n';
return 0;
}
Output:
initial max heap : 40
max heap after pop : 20
max heap after push: 100
final sorted range : 5 10 15 20 100
Press any key to continue . . .
Penjelasan lebih lanjut tentang library Algorithm dapat dilihat di
http://www.cplusplus.com/reference/algorithm/
Berikut ini contoh penggunaan STL Iterator. Iterator merupakan object yang menunjuk ke suatu elemen pada range elemen atau container.
#include <iostream>
#include <iterator>
using namespace std;
class MyIterator : public iterator<input_iterator_tag, int>
{
int* p;
public:
MyIterator(int* x) :p(x) {}
MyIterator(const MyIterator& mit) : p(mit.p) {}
MyIterator& operator++() {++p;return *this;}
MyIterator operator++(int) {MyIterator tmp(*this); operator++(); return tmp;}
bool operator==(const MyIterator& rhs) const {return p==rhs.p;}
bool operator!=(const MyIterator& rhs) const {return p!=rhs.p;}
int& operator*() {return *p;}
};
int main () {
int numbers[]={10,20,30,40,50};
MyIterator from(numbers);
MyIterator until(numbers+5);
for (MyIterator it=from; it!=until; it++)
cout << *it << ' ';
cout << '\n';
return 0;
}
Output:
10 20 30 40 50
Penjelasan lebih lanjut tentang library Iterator dapat dilihat di
http://www.cplusplus.com/reference/iterator/