La Biblioteca de Plantilles Estàndard (STL) és una col·lecció de classes i funcions de C++ que proporciona estructures de dades i algorismes genèrics. La STL és una part fonamental de la programació en C++ i permet als programadors escriure codi més eficient i reutilitzable.

Conceptes Clau de la STL

  1. Contenidors

Els contenidors són classes de la STL que emmagatzemen col·leccions d'objectes. Els principals tipus de contenidors són:

  • Seqüencials: emmagatzemen elements en una seqüència específica.
    • vector
    • deque
    • list
    • array
  • Associatius: emmagatzemen elements en una estructura que permet la cerca ràpida.
    • set
    • map
    • multiset
    • multimap
  • Contenidors basats en hash: utilitzen una funció de hash per emmagatzemar elements.
    • unordered_set
    • unordered_map
    • unordered_multiset
    • unordered_multimap

  1. Iteradors

Els iteradors són objectes que permeten recórrer els elements d'un contenidor. Són similars als punters i proporcionen una interfície comuna per accedir als elements dels contenidors.

  1. Algorismes

La STL proporciona una sèrie d'algorismes genèrics que es poden aplicar als contenidors. Alguns exemples inclouen:

  • sort
  • find
  • copy
  • accumulate

  1. Funcions i Funcions Lambda

Les funcions i les expressions lambda es poden utilitzar amb els algorismes de la STL per proporcionar funcionalitat personalitzada.

Exemples Pràctics

Exemple 1: Utilització de vector

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

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5};

    // Afegir elements
    numbers.push_back(6);
    numbers.push_back(7);

    // Iterar i imprimir elements
    for (int num : numbers) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    // Ordenar elements
    std::sort(numbers.begin(), numbers.end(), std::greater<int>());

    // Imprimir elements ordenats
    for (int num : numbers) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

Exemple 2: Utilització de map

#include <iostream>
#include <map>

int main() {
    std::map<std::string, int> ageMap;

    // Afegir elements
    ageMap["Alice"] = 30;
    ageMap["Bob"] = 25;
    ageMap["Charlie"] = 35;

    // Iterar i imprimir elements
    for (const auto& pair : ageMap) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }

    // Cercar un element
    auto it = ageMap.find("Bob");
    if (it != ageMap.end()) {
        std::cout << "L'edat de Bob és " << it->second << std::endl;
    } else {
        std::cout << "Bob no es troba al mapa." << std::endl;
    }

    return 0;
}

Exercicis Pràctics

Exercici 1: Utilització de set

Descripció: Crea un programa que utilitzi un set per emmagatzemar una col·lecció de números enters únics. Afegeix alguns números, elimina un número i imprimeix tots els números del set.

Solució:

#include <iostream>
#include <set>

int main() {
    std::set<int> numberSet;

    // Afegir elements
    numberSet.insert(10);
    numberSet.insert(20);
    numberSet.insert(30);
    numberSet.insert(40);

    // Eliminar un element
    numberSet.erase(20);

    // Iterar i imprimir elements
    for (int num : numberSet) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

Exercici 2: Utilització de unordered_map

Descripció: Crea un programa que utilitzi un unordered_map per emmagatzemar una col·lecció de parelles clau-valor on la clau és un nom i el valor és una edat. Afegeix alguns elements, actualitza l'edat d'un element i imprimeix tots els elements del unordered_map.

Solució:

#include <iostream>
#include <unordered_map>

int main() {
    std::unordered_map<std::string, int> ageMap;

    // Afegir elements
    ageMap["Alice"] = 30;
    ageMap["Bob"] = 25;
    ageMap["Charlie"] = 35;

    // Actualitzar l'edat de Bob
    ageMap["Bob"] = 26;

    // Iterar i imprimir elements
    for (const auto& pair : ageMap) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }

    return 0;
}

Resum

En aquesta secció, hem après sobre la Biblioteca de Plantilles Estàndard (STL) de C++, incloent-hi els contenidors, els iteradors, els algorismes i les funcions lambda. Hem vist exemples pràctics d'utilització de vector i map, i hem realitzat exercicis pràctics amb set i unordered_map. La STL és una eina poderosa que permet als programadors escriure codi més eficient i reutilitzable. En el proper mòdul, explorarem les expressions lambda en més detall.

© Copyright 2024. Tots els drets reservats