Acceder Registrarme

ESTRUCTURA DE DATOS: ARREGLOS EN C++


En este post veremos lo que son los arreglos bajo la perspectiva de una estructura de datos, siendo que estos son estructuras líneas. Empezaremos con unos ejemplos simples y serán seguidos por otros post donde detallaremos y trataremos de abarcar los temas fundamentales de estructuras de datos en C++. En este caso en particular, veremos más que desde la base, un repaso de lo que son los arreglos, debido a que esto sería más de la parte de fundamentos de la programación.

Autor: Kevin Arias (Ver todos sus post)

Estructura de datos Vectores Arrays Arreglos

Fecha de publicación: 2025-05-07 15:23:21
Ayúdanos con el arduo trabajo que realizamos.
[ESTRUCTURA DE DATOS] ESTRUCTURA DE DATOS: ARREGLOS EN C++

Para empezar con esta serie de artículos de estructura de datos, y claro, antes de iniciar con el ejemplo de los arreglos, veamos algunos conceptos fundamentales.

Estructura de datos

Las estructura de datos en un contexto de programación, vienen a ser formas de almacenar datos e información en colecciones, de tal manera que sean fáciles de manejar, para aplicar algoritmos de operaciones, búsqueda, almacenamiento y otros.

En palabras simples, podemos decir que existen 3 tipos de estructuras de datos, los cuales son:

Estructuras de datos lineales

En este tipo de estructuras se encuentran los:

  • Arreglos
  • Listas
  • Pilas
  • Colas

Estructuras de datos no lineales

En este tipo de estructuras se encuentran los:

  • Árboles
  • Grafos

Estructuras de datos abstractas

En este tipo de estructuras se encuentran los:

  • Conjuntos
  • Mapas o diccionarios
  • Tablas hash

Habiendo entendido lo anterior, de manera general, pasemos a detallar el tema inicial de este post.

Arreglos, Arrays o Vectores

Estos son estructuras de datos lineales, que puede depender para su creación de tipos de datos primitivos (int, float, char, ...), esto como base del almacenamiento, sin embargo, en toda medida será una colección de datos que se alojarán en dichas variables, usándolas como base del tipo, a su vez, debemos saber que también se pueden crear arrays basado en tipos creados com clases, las cuales serían definidas propiamente por nosotros.

Veamos un ejemplo de un array simple de tipo entero, con 7 elementos, para esto, crearemos un program en C++ con el siguiente código:

#include 

int main() {
    int myVector[] = { 1, 2, 3, 4, 5, 6, 7 };

    for(unsigned int i = 0; i < 7; i++) {
        std::cout << myVector[i] << ", ";
    }

    return 0;
}

Por ejemplo, el código anterior, lo único que hace es declarar un array llamado myVector, de tipo entero (int), en este caso se inicializa dicho array con 7 valores enteros, por lo que no es necesario definir su dimensión, ya que este se define de manerea automática, al ser inicializado de forma directa.

Seguidamente tenemos un bucle que da 7 iteraciones, recorriendo la longitud exacta del array creado y en cada iteración se imprime su valor, seguido de un caracter coma (,), tener en consideración que los corchetes y el valor dentro de este, indica la posición del vector (no se entrará en detalle de esta explicación, considerando que este es un repaso y ya debería conocerse el tema de vectores, para adentrarse a la línea de publicaciones de estructura de datos que haremos en este blog); sin embargo, este código se puede mejorar, en el sentido del recorrido de datos, se puede hacer que el bucle detecte la longitud del array de forma automática, sin la necesidad de poner un dato fijo, como ahora es el valor 7, entonces, veamos cómo hacer esto:

Para hacer esa mejora, simplementa cambiamos la siguiente sección de código:

for(unsigned int i = 0; i < 7; i++) {

por lo siguiente:

for(unsigned int i = 0; i < sizeof(myVector)/sizeof(int); i++) {

Lo que se está haciendo en la línea modificada, es revisar el espacio en memoria que usa myVector, y se divide entre el espacio de memoria que usa el tipo int, que correspondería a cada elemento del array, por lo tanto, esto da como resultado, la cantidad de elementos que se pueden almacenar en el array, que para este caso serían 7; así, mejoramos cierta parte de este código que tiene una implementación tan simple.

Otra forma de declarar un vector, sin que este sea incializado directamente, sería haciéndolo de la siguiente manera: int myVector[7]; y para asignar valores, se haría elemento por elemento, por ejemplo: myVector[0] = 1; myVector[1] = 2; y así sucesivamente; de esta manera podemos declarar un array con memoria reservada para su almacenamiento y asignar sus datos posteriormente; la modificación de este caso se deja como ejercicio para que puedan implementarlo en el ejemplo planteado inicialmente.

Un ejemplo más completo del uso de arrays

Luego de haber entendido lo anterior, ahora veamos un ejemplo de un programa con manejo de arrays o vectores, para hallar el número mayor de ciertos números ingresados por el usuario, los cuales son almacenados en una estructura de datos lineal; seguidamente se pude ver el código completo para que pueda ser ejecutado y analizado:

#include 

int main() {
    int arrayNumber[5];
    int temporalNumber;
    bool initTemporalNumber = false;

    for(unsigned int i = 0; i < 5; i++) {
        std::cout << "Ingrese el valor del elemento Nro. " << (i + 1) << ": ";
        std::cin >>  arrayNumber[i];
    }

    std::cout << std::endl;

    for(unsigned int i = 0; i < 5; i++) {
        if(!initTemporalNumber || arrayNumber[i] > temporalNumber) {
            temporalNumber = arrayNumber[i];

            initTemporalNumber = true;
        }
    }

    std::cout << "El valor mayor encontrado en el vector es: " << temporalNumber;

    return 0;
}

Ahora, es tarea suya el revisar y entender el ejemplo anterior.

Arrays con tipos definidos como clase

Entendido lo anterio (o más que eso, sería, habiendo repasado lo que ya deberíamos conocer), ahora veamos como podemos trabajar array con tipos definidos por nosotros, por lo cual, para este caso, veremos la implementación:

Lo primero que debemos entender es que trabajaremos con clases, entonces, si aún no conoces el manejo de clases en C++, te invito a repasar previamente este tema (solo basta con un manejo bastante básico de clases), una vez entendido esto, pasemos a la implementación del ejemplo.

Para este caso tendremos que crear 3 archivos, ponerlos en la misma carpeta y luego ejecutar el programa Main.cpp:

Primero creamos el archivo Person.h el cual será donde se definirá la definición de la clase:

#include 

class Person {
    public:
        std::string firstName;
        std::string surName;

        void showData();
};

Luego creamos el archivo que implementa la clase, en este caso, el Person.cpp:

#include 

#include "Person.h"

void Person::showData() {
    std::cout << this->firstName << " " << this->surName << std::endl;
}

Finalmente, creamos el archivo Main.cpp, donde se llamará a la clase e implementará la interacción con su comportamiento:

#include 
#include 

#include "Person.cpp"

int main() {
    Person person[2];

    for(unsigned int i = 0; i < 2; i++) {
        std::cout << "Ingrese el nombre de la persona Nro. " << (i + 1) << ": ";
        getline(std::cin, person[i].firstName);

        std::cout << "Ingrese el apellido de la persona Nro. " << (i + 1) << ": ";
        getline(std::cin, person[i].surName);

        std::cout << std::endl;
    }

    std::cout << std::endl;

    for(unsigned int i = 0; i < 2; i++) {
        person[i].showData();
    }

    return 0;
}

De esta manera, tenemos todo listo y solo quedará ejecutar el programa, esto lo pueden hacer directamente con el compilador que ofrece un programa como Zinjai, o, en su defecto pueden ejecutar directamente por consola, mediante el compilador de C++ (La instalación de Zinjai o del compilador de C++, será algo que deberás revisar en otras fuentes, ya que existen muchas guias de este caso).

Para ejecutar desde la consola, mediante el compilador de C++, se puede usar el siguiente comando, estando ya ubicado en la raiz del proyecto:

g++ Main.cpp -o Main && Main

El comando anterior compilará el código generando su archivo binario y luego ejecutará este último.

CONCLUSIÓN

Como pueden ver, el tema de vectores se va ampliando si solo se vio previamente los fundamentos de programación, sin embargo, en este post, explicamos un manejo de vectores a nivel de tipos con clases, para un manejo de objetos adecuado, y claro, iremos viendo más al paso del tiempo.

Recordemos que este artículo solo fue con intención de hacer un repaso de los temas de fundamentos de programación, donde se debió haber tocado los conceptos de vectores y matrices, entonces, este solo es un calentamiento inicial para todo lo que viene más adelante.



...

INFORMACIÓN SOBRE EL AUTOR DEL ARTÍCULO
KEVIN ARNOLD ARIAS FIGUEROA (SOFTWARE ARCHITECT - CODIDEEP E.I.R.L.): Profesional en tecnologías de la información con más de 10 años de experiencia en desarrollo de software empresarial, con amplios conocimientos en manejo de arquitecturas de software de escala vertical y horizontal, gestión de proyectos, liderazgo de equipos y dominio en modelado de procesos a gran escala.


  • Debes estar logueado para realizar comentarios