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
- 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.
vectordequelistarray
- Associatius: emmagatzemen elements en una estructura que permet la cerca ràpida.
setmapmultisetmultimap
- Contenidors basats en hash: utilitzen una funció de hash per emmagatzemar elements.
unordered_setunordered_mapunordered_multisetunordered_multimap
- 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.
- Algorismes
La STL proporciona una sèrie d'algorismes genèrics que es poden aplicar als contenidors. Alguns exemples inclouen:
sortfindcopyaccumulate
- 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.
Curs de Programació en C++
Mòdul 1: Introducció al C++
- Introducció al C++
- Configuració de l'Entorn de Desenvolupament
- Sintaxi i Estructura Bàsica
- Variables i Tipus de Dades
- Entrada i Sortida
Mòdul 2: Estructures de Control
Mòdul 3: Funcions
- Introducció a les Funcions
- Paràmetres de Funció i Tipus de Retorn
- Sobrecàrrega de Funcions
- Recursivitat
Mòdul 4: Arrays i Strings
Mòdul 5: Punteres i Referències
- Introducció als Punteres
- Aritmètica de Punteres
- Punteres i Arrays
- Referències
- Assignació Dinàmica de Memòria
Mòdul 6: Programació Orientada a Objectes
- Introducció a la POO
- Classes i Objectes
- Constructors i Destructors
- Herència
- Polimorfisme
- Encapsulació i Abstracció
Mòdul 7: Temes Avançats
- Plantilles
- Gestió d'Excepcions
- Entrada/Sortida de Fitxers
- Biblioteca de Plantilles Estàndard (STL)
- Expressions Lambda
- Multifil
