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 tersusun atas tiga komponen inti yang bekerja bersama:

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

Inti pentingnya adalah algoritma tidak mengetahui 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, menggunakan algoritma apa pun dengan kontainer 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 bangun sistem pemrosesan data sederhana yang menunjukkan filosofi STL dalam memisahkan kontainer, iterator, dan algoritma. Kamu akan membuat modul utilitas yang bekerja dengan komponen STL dan program utama yang menunjukkan bagaimana bagian-bagian ini bekerja bersama.

Kamu akan membuat dua file:

  • DataProcessor.h: Definisikan fungsi utilitas yang bekerja dengan kontainer 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 baris baru. Gunakan iterator (begin() dan end()) untuk menelusuri kontainer.

    Buat fungsi bernama sortAndPrint yang menerima std::vector<int>&, mengurutkannya menggunakan std::sort, lalu mencetak elemen yang sudah diurutkan, dipisahkan oleh spasi, kemudian 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 bisa menggunakan perulangan sederhana dengan iterator untuk melakukannya.

  • main.cpp: Baca input dan tunjukkan cara kerja komponen STL 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:

    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 bagaimana fungsi-fungsimu bekerja dengan vector melalui iterator, dan bagaimana std::sort serta std::find beroperasi pada kontainer apa pun yang menyediakan tipe iterator yang sesuai. Inilah kekuatan desain STL: algoritma tidak bergantung pada kontainer, 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