Menu
CoddyTech

Gambaran Umum dan Filosofi STL

Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan C++ di Coddy. Pelajaran 70 dari 104.

Standard Template Library (STL) adalah kumpulan class dan fungsi berbasis template yang menyediakan struktur data dan algoritma umum. Dibangun berdasarkan konsep template yang telah kamu pelajari, STL menerapkan filosofi desain yang kuat: memisahkan penyimpanan data dari manipulasi data.

STL disusun berdasarkan tiga komponen inti yang bekerja bersama:

KomponenTujuanContoh
ContainerMenyimpan kumpulan objectvector, map, set
IteratorMenyediakan akses ke elemen containerInput, output, akses acak
AlgoritmaMelakukan operasi pada datasort, find, transform

Inti pentingnya adalah algoritma tidak mengenal container secara langsung, algoritma bekerja melalui iterator. Artinya, satu algoritma sort dapat digunakan dengan vector, array, dan container apa pun yang menyediakan tipe iterator yang tepat:

#include <vector>
#include <algorithm>
#include <iostream>

int main() {
    std::vector<int> nums = {5, 2, 8, 1, 9};
    
    std::sort(nums.begin(), nums.end());
    
    for (int n : nums) {
        std::cout << n << " ";
    }
    // output: 1 2 5 8 9
}

Pemisahan ini berarti kamu bisa memadukan berbagai pilihan, gunakan algoritma apa pun dengan container yang kompatibel tanpa menulis kode baru. STL menyediakan implementasi yang telah teruji dan dioptimalkan, sehingga kamu bisa fokus menyelesaikan masalah alih-alih membuat ulang struktur data umum.

challenge icon

Tantangan

Mudah

Mari kita buat sistem pemrosesan data sederhana yang menunjukkan filosofi STL dalam memisahkan container, iterator, dan algoritma. Kamu akan membuat module utilitas yang bekerja dengan komponen STL dan program utama yang menunjukkan cara bagian-bagian ini saling terhubung.

Kamu akan membuat dua file:

  • DataProcessor.h: Definisikan fungsi utilitas yang bekerja dengan container STL melalui iterator, untuk menunjukkan filosofi desain STL.

    Buat fungsi bernama printVector yang menerima std::vector<int>& dan mencetak semua elemen yang dipisahkan oleh spasi, lalu diikuti baris baru. Gunakan iterator (begin() dan end()) untuk menelusuri container.

    Buat fungsi bernama sortAndPrint yang menerima std::vector<int>&, mengurutkannya menggunakan std::sort, lalu mencetak elemen yang sudah diurutkan dan dipisahkan oleh spasi, diikuti baris baru.

    Buat fungsi bernama findElement yang menerima std::vector<int>& dan nilai int yang akan dicari. Gunakan std::find untuk menemukan elemen tersebut. Jika ditemukan, cetak Found: <value>. Jika tidak ditemukan, cetak Not found: <value>.

    Buat fungsi bernama getSum yang menerima std::vector<int>& dan mengembalikan jumlah semua elemennya. Kamu dapat menggunakan perulangan sederhana dengan iterator untuk ini.

  • main.cpp: Baca input dan tunjukkan cara kerja komponen STL secara bersama-sama.

    Baca lima input (masing-masing pada baris terpisah):

    1. Bilangan bulat pertama
    2. Bilangan bulat kedua
    3. Bilangan bulat ketiga
    4. Bilangan bulat keempat
    5. Nilai yang akan dicari

    Buat std::vector<int> dan tambahkan empat bilangan bulat pertama ke dalamnya. Lalu tunjukkan filosofi STL dengan cara:

    1. Mencetak Original:, lalu memanggil printVector
    2. Mencetak Sorted:, lalu memanggil sortAndPrint
    3. Memanggil findElement dengan nilai yang dicari
    4. Mencetak Sum: <result> menggunakan getSum

Contohnya, dengan input 5, 2, 8, 1, dan 8:

Original: 5 2 8 1 
Sorted: 1 2 5 8 
Found: 8
Sum: 16

Dengan input 10, 30, 20, 40, dan 15:

Original: 10 30 20 40 
Sorted: 10 20 30 40 
Not found: 15
Sum: 100

Perhatikan cara fungsi-fungsimu bekerja dengan vector melalui iterator, serta cara std::sort dan std::find bekerja pada container apa pun yang menyediakan tipe iterator yang sesuai. Inilah kekuatan desain STL: algoritma tidak bergantung pada container dan hanya terhubung melalui iterator.

Coba sendiri

#include <iostream>
#include <vector>
#include "DataProcessor.h"

using namespace std;

int main() {
    // Baca lima bilangan bulat dari input
    int num1, num2, num3, num4, searchValue;
    cin >> num1;
    cin >> num2;
    cin >> num3;
    cin >> num4;
    cin >> searchValue;
    
    // TODO: Buat vector dan tambahkan empat bilangan bulat pertama ke dalamnya
    
    // TODO: Cetak "Original: " dan panggil printVector
    
    // TODO: Cetak "Sorted: " dan panggil sortAndPrint
    
    // TODO: Panggil findElement dengan nilai yang dicari
    
    // TODO: Cetak "Sum: " diikuti hasil dari getSum
    
    return 0;
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Object

Latihan sendiri: Compiler C++ online