Skip to main content

Command Palette

Search for a command to run...

11. C++: Vectores

Updated
•3 min read•View as Markdown
  • std::vector memory layout example

    https://hackingcpp.com/index.html

  • Funciones para trabajar con vectores:

    1. Ordenación con std::sort: Ordena los elementos en el vector de menor a mayor.

       // vector = sort(desde, hasta)
       std::sort(vector.begin(), vector.end());
      

       #include <iostream>
       #include <vector>
       #include <algorithm> // Para std::sort
      
       int main() {
           // Crear un vector de enteros
           std::vector<int> numbers = {5, 2, 9, 1, 7, 6};
      
           // Ordenar los elementos
           std::sort(numbers.begin(), numbers.end());
           std::cout << "Elementos ordenados: ";
           for (int num : numbers) {
               std::cout << num << " ";
           }
           std::cout << std::endl;
      
           return 0;
       }
      
    2. Búsqueda con std::find: Busca un elemento en el vector.

       // posicion_del_elemento_encontrado = find(desde, hasta, valor_a_buscar)
       auto it = std::find(numbers.begin(), numbers.end(), valor_a_buscar);
      

       #include <iostream>
       #include <vector>
       #include <algorithm> // Para std::find
      
       int main() {
           // Crear un vector de enteros
           std::vector<int> numbers = {5, 2, 9, 1, 7, 6};
      
           // Buscar un elemento
           int valor_a_buscar = 7;
           // posicion_del_elemento_encontrado = find(desde, hasta, valor_a_buscar)
           auto it = std::find(numbers.begin(), numbers.end(), valor_a_buscar);
           if (it != numbers.end()) {
               std::cout << "El valor " << valor_a_buscar << " fue encontrado en el vector." << std::endl;
           } else {
               std::cout << "El valor " << valor_a_buscar << " no fue encontrado en el vector." << std::endl;
           }
      
           return 0;
       }
      

      Otros muy utiles son: std::find_if(), std::distance(), find_if_not https://unstop.com/blog/find-in-vector-cpp

    3. Inversión con std::reverse: Invierte el orden de los elementos en el vector.

        // reverse(desde, hasta)
       std::reverse(numbers.begin(), numbers.end());
      

       #include <iostream>
       #include <vector>
       #include <algorithm> // Para std::sort
      
       int main() {
           // Crear un vector de enteros
           std::vector<int> numbers = {5, 2, 9, 1, 7, 6};
      
           // 3. Invertir el orden de los elementos
           std::reverse(numbers.begin(), numbers.end());
           std::cout << "Elementos en orden inverso: ";
           for (int num : numbers) {
               std::cout << num << " ";
           }
           std::cout << std::endl;
      
           return 0;
       }
      
    4. Acumulación con std::accumulate o std::reduce: Suma los elementos en un rango.

       // totalSuma = accumulate(desde, hasta, init)
       int sum = std::accumulate(numbers.begin(), numbers.end(), 0);
      

      Ejemplo:

       #include <iostream>
       #include <vector>
       #include <numeric>   // Para std::accumulate
      
       int main() {
           // Crear un vector de enteros
           std::vector<int> numbers = {5, 2, 9, 1, 7, 6};
      
           // 4. Sumar todos los elementos
           int sum = std::accumulate(numbers.begin(), numbers.end(), 0);
           std::cout << "Suma de todos los elementos: " << sum << std::endl;
      
           return 0;
       }
      
    5. Transformación con std::transform: Aplica una función a un rango de elementos y almacena el resultado en otro contenedor.

       // transform(desde, hasta, 
       std::transform(numbers.begin(), numbers.end(), numbers.begin(),
                          [](int x) { return x * 2; });
      

      image

       #include <iostream>
       #include <vector>
       #include <algorithm> // Para std::transform
      
       int main() {
           // Crear un vector de enteros
           std::vector<int> numbers = {5, 2, 9, 1, 7, 6};
      
           // 5. Transformar los elementos (por ejemplo, duplicar cada valor)
           std::transform(numbers.begin(), numbers.end(), numbers.begin(),
                          [](int x) { return x * 2; });
           std::cout << "Elementos después de duplicar: ";
           for (int num : numbers) {
               std::cout << num << " ";
           }
           std::cout << std::endl;
      
           return 0;
       }
      

More from this blog

Blog de David P.

19 posts