Sesión 13

Clase del 6 de abril de 2020. For each en C++ y set

Temas

Estructura de datos set

#include <iostream>
#include <vector>
#include <set>

using namespace std;

int main() {
    vector<int> datos =  {1, 5, 9, 2, 4, 3, 6, 10, 8, 7, 1, 5, 6, 6, 7};
    set<int> mi_set;
    // Insertar los datos en un set.
    // Esta estructura remueve duplicados y ordena los datos por defecto.
    for (int i = 0; i < datos.size(); i++) {
        mi_set.insert(datos[i]);
    }

    // Recorrer el set
    // Necesita un iterador para recorrer cada posicion del set.
    // Que es un iterador? Es un puntero que almacena la direccion de memoria a la que apunta.
    // <tipoDato>::iterator <nombreIterador>
    // set<int>::iterator it;  // <-- asi se declara un iterador a un set de enteros
    // Para recorrerlo, apuntamos al inicio (begin y luego aumentamos el iterador
    // hasta llegar al fin (end). Nota, cuando llegamos al fin es cuando it == end()
    for(set<int>::iterator it = mi_set.begin(); it != mi_set.end(); it++) {
        // Imprimir el valor al que apunta el iterador,
        // para esto necesitamos recuperar el valor al que apunta el iterador.
        // Esto se consigue utilizando el operador de desreferenciacion.
        cout << *it << " ";
    }

    return 0;
}

For each

#include <iostream>
#include <vector>
#include <set>
#include <string>

using namespace std;

int main() {
    vector<int> datos =  {1, 5, 9, 2, 4, 3, 6, 10, 8, 7, 1, 5, 6, 6, 7};
    set<int> mi_set;

    // Insertar los datos en el set.
    // Utilizar un for de C++11, conocido como foreach
    // Solo se puede utilizar el foreach con estructuras que tengan
    // un begin() y un end()
    for(int dato : datos) {
        mi_set.insert(dato);
    }

    // Utilizar un for de C++11 para recorrer el set
    for(int dato : mi_set) {
        cout << dato << " ";
    }
    cout << "\n";

    // Cambiar el valor de todos los datos en el vector por 1
    // int idx = 0;
    // while (idx < datos.size()) {
    //     int& x = datos[idx];
    //     x = 1; // datos[idx] = 1;
    //     idx++;
    // }
    for (int& x : datos) {
        x = 1;
    }

    // Imprimir los valores del vector
    for (auto x : datos) {
        cout << x << " ";
    }
    cout << "\n";

    string palabra = "Daniel";
    for (auto letra : palabra) {
        cout << letra << " ";
    }

    return 0;
}

Códigos vistos en clase

No hay video.

Last updated