Los contenedores son estructuras de datos que te permiten almacenar y manipular conjuntos de elementos. C++ proporciona una variedad de contenedores estándar que se pueden usar para diferentes propósitos. Algunos de los contenedores más comunes son vector
, list
, y map
. Aquí tienes una introducción a algunos de estos contenedores.
1. Vector: El vector
es una secuencia dinámica de elementos de tamaño variable. Los elementos se almacenan en una ubicación contigua en la memoria y se pueden acceder utilizando índices.
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> numeros;
numeros.push_back(10);
numeros.push_back(20);
numeros.push_back(30);
for (int i = 0; i < numeros.size(); ++i) {
cout << numeros[i] << " ";
}
return 0;
}
2. List: La list
es una estructura de datos enlazada que almacena elementos en nodos. A diferencia del vector, los elementos no están almacenados en ubicaciones contiguas en memoria, lo que permite inserciones y eliminaciones eficientes en cualquier posición.
#include <iostream>
#include <list>
using namespace std;
int main() {
list<int> numeros;
numeros.push_back(10);
numeros.push_back(20);
numeros.push_back(30);
for (int num : numeros) {
cout << num << " ";
}
return 0;
}
3. Map: El map
es una estructura que almacena pares clave-valor. Cada clave es única y se utiliza para acceder a su valor correspondiente.
#include <iostream>
#include <map>
using namespace std;
int main() {
map<string, int> edades;
edades["Juan"] = 25;
edades["Maria"] = 30;
edades["Carlos"] = 22;
cout << "Edad de Juan: " << edades["Juan"] << endl;
return 0;
}
Además de vector
, list
y map
, C++ proporciona una variedad de contenedores estándar que se pueden utilizar según las necesidades específicas de tu programa. Aquí hay una lista de algunos de los contenedores más comunes en C++:
Secuenciales:
deque
: Una doble cola que permite inserciones y eliminaciones eficientes tanto al principio como al final.array
: Un contenedor de tamaño fijo que almacena elementos en una ubicación contigua en la memoria.forward_list
: Similar alist
, pero implementada como una lista enlazada simple, lo que la hace más eficiente en términos de memoria.
Asociativos:
set
: Almacena un conjunto de elementos únicos ordenados.multiset
: Similar aset
, pero permite elementos duplicados.map
: Almacena pares clave-valor únicos ordenados según la clave.multimap
: Similar amap
, pero permite claves duplicadas.
Contenedores no ordenados:
unordered_set
: Almacena un conjunto de elementos únicos sin orden específico.unordered_multiset
: Similar aunordered_set
, pero permite elementos duplicados.unordered_map
: Almacena pares clave-valor únicos sin orden específico según la clave.unordered_multimap
: Similar aunordered_map
, pero permite claves duplicadas.
Este ejemplo muestra como inicializar muchos otros tipos de contenedores, y mostrar elementos en varios contenedores, incluyendo vector
, list
, deque
, array
, forward_list
, set
, multiset
, map
, multimap
, unordered_set
, unordered_multiset
, unordered_map
y unordered_multimap
.
#include <iostream>
#include <vector>
#include <list>
#include <deque>
#include <array>
#include <forward_list>
#include <set>
#include <map>
#include <unordered_set>
#include <unordered_map>
using namespace std;
int main() {
// Vector
vector<int> v = {10, 20, 30};
// List
list<int> l = {40, 50, 60};
// Deque
deque<int> d = {70, 80, 90};
// Array
array<int, 3> arr = {100, 110, 120};
// Forward List
forward_list<int> fl = {130, 140, 150};
// Set
set<int> s = {10, 20, 30, 40, 50};
// Multiset
multiset<int> ms = {10, 20, 20, 30, 30};
// Map
map<string, int> m = {{"Juan", 25}, {"Maria", 30}, {"Carlos", 22}};
// Multimap
multimap<string, int> mm = {{"Juan", 25}, {"Maria", 30}, {"Juan", 28}};
// Unordered Set
unordered_set<int> us = {10, 20, 30};
// Unordered Multiset
unordered_multiset<int> ums = {10, 20, 20, 30, 30};
// Unordered Map
unordered_map<string, int> um = {{"Juan", 25}, {"Maria", 30}, {"Carlos", 22}};
// Unordered Multimap
unordered_multimap<string, int> umm = {{"Juan", 25}, {"Maria", 30}, {"Juan", 28}};
// Acceder y mostrar los elementos de los contenedores
for (int num : v) cout << num << " ";
cout << endl;
for (int num : l) cout << num << " ";
cout << endl;
for (int num : d) cout << num << " ";
cout << endl;
for (int num : arr) cout << num << " ";
cout << endl;
for (int num : fl) cout << num << " ";
cout << endl;
for (int num : s) cout << num << " ";
cout << endl;
for (int num : ms) cout << num << " ";
cout << endl;
for (auto pair : m) cout << pair.first << ": " << pair.second << " ";
cout << endl;
for (auto pair : mm) cout << pair.first << ": " << pair.second << " ";
cout << endl;
for (int num : us) cout << num << " ";
cout << endl;
for (int num : ums) cout << num << " ";
cout << endl;
for (auto pair : um) cout << pair.first << ": " << pair.second << " ";
cout << endl;
for (auto pair : umm) cout << pair.first << ": " << pair.second << " ";
cout << endl;
return 0;
}
Pueder ir al artículo principal:
Códigos Sencillos hechos en C++