Programación en C++ – Contenedores (vector, list, map, etc.)

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 a list, 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 a set, pero permite elementos duplicados.
  • map: Almacena pares clave-valor únicos ordenados según la clave.
  • multimap: Similar a map, pero permite claves duplicadas.

Contenedores no ordenados:

  • unordered_set: Almacena un conjunto de elementos únicos sin orden específico.
  • unordered_multiset: Similar a unordered_set, pero permite elementos duplicados.
  • unordered_map: Almacena pares clave-valor únicos sin orden específico según la clave.
  • unordered_multimap: Similar a unordered_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++

Deja un comentario