¿Cuál es la diferencia entre un vector y una matriz en c?++?

¿Cuál es la diferencia entre un vector y una matriz en c?++?
Hay muchas diferencias entre un vector y una matriz en C++. Sin embargo, las principales similitudes son muy importantes. Las principales similitudes son que ambos son una lista, y cada una contendría una secuencia de datos del mismo tipo. Las principales diferencias son las siguientes: el tamaño de un vector (longitud) se puede aumentar naturalmente, pero el de una matriz se fija y no se puede aumentar. Los elementos se pueden insertar dentro de un vector, pero no se pueden insertar dentro de una matriz. Los elementos se pueden agregar al final del vector, pero no se pueden agregar al final de la matriz. El vector es una clase de la que se instancian otros objetos vectoriales, pero la matriz es un puntero constante a una secuencia de datos del mismo tipo. El vector tiene métodos (funciones miembros), pero la matriz no lo hace, por lo que el vector se denomina estructura de datos. Mientras que el puntero se puede usar con la matriz, los iteradores se usan con el vector. Un iterador es un puntero elaborado.

No se puede incluir ningún elemento frente a la matriz. Con C ++ 17 y superior, se puede incluir un elemento frente al vector utilizando la función miembro emplace ().

Para el resto de este artículo, se ilustran las diferencias entre el vector y la matriz. Para cada punto, se menciona la incapacidad de la matriz, o se da su forma roma o engorrosa de lograr el mismo objetivo.

Contenido del artículo

  • Creación de un vector o matriz
  • Tamaño creciente
  • Inserción
  • Anexo
  • Borrando un elemento
  • Claro
  • Intercambio
  • Tamaño
  • Conclusión

Creación de un vector o matriz

Se puede crear un vector de varias maneras. La forma básica es la siguiente:

vector vtr = 'a', 'b', 'c', 'd', 'e';

En consecuencia, se crearía una matriz de la siguiente manera:

char arr [] = 'a', 'b', 'c', 'd', 'e';

Tenga en cuenta la diferencia en los operandos que están a la izquierda del operador de asignación. El número de elementos para el vector se puede agregar o reducir, pero el tamaño de la matriz permanece fijo, a las 5 en este caso.

Para tener y usar un vector en un programa, el programa debe comenzar con:

#incluir
usando el espacio de nombres STD;

Para tener y usar una matriz en un programa, no se necesita ninguna Directiva del preprocesador.

Tamaño creciente

El siguiente código muestra cómo un vector de dos elementos inicialmente se incrementa a cuatro elementos, utilizando su función miembro push_back ():

vector VTR (2);
vtr [0] = 'a';
VTR [1] = 'B';
VTR.push_back ('c');
VTR.push_back ('d');

Este código debe estar en un cuerpo de funciones. Para la matriz, y dado que la matriz tiene un tamaño fijo, cree una matriz para el número máximo de elementos previstos, antes de agregar los elementos utilizando el operador []. Ejemplo:

char arr [4];
arr [0] = 'a';
arr [1] = 'b';
// Agregar elementos
arr [2] = 'c';
arr [3] = 'd';

Además, este código debe estar dentro de un cuerpo de funciones.

Inserción

En el siguiente código, se inserta un elemento frente al elemento apuntado por el iterador, P:

vectorvtr = 'a', 'b', 'd', 'e';
vector :: iterador p = vtr.comenzar();
++pag;
++pag;
char ch = 'c';
VTR.insertar (p, ch);
para (int i = 0; icout<

La salida es:

A B C D E

La primera declaración del código crea el objeto vectorial. 'C', que debería haber estado frente a 'D' por orden alfabético, está ausente aquí. La segunda declaración devuelve un iterador que apunta al primer elemento del vector. Las siguientes dos declaraciones incrementan el puntero para señalar 'D'. La declaración después de asignar 'C' a CH. En ese segmento de código, la última declaración inserta 'c' frente a 'd', usando el iterador.

En cuanto a la matriz, no hay forma de insertar un elemento. Debido a limitaciones como esta para la matriz, se diseñaron el vector y otros contenedores.

NOTA: La función de miembro insert () también se puede usar para insertar un elemento frente a un vector.

Anexo

Agregar significa agregar elementos en la parte posterior. La función miembro push_back () se puede usar para agregar elementos en la parte posterior del vector - ver arriba. La matriz no se puede agregar a. La única forma de solucionar este problema para la matriz es crear una matriz para el tamaño máximo previsto. Poner elementos desde el principio. Luego se dejará algo de espacio (celdas) en la matriz. Entonces, si hay alguna necesidad de agregar elementos en la parte posterior, ajuste los elementos (valores) en los espacios detrás de que están vacíos (que tienen valores predeterminados).

Borrando un elemento

Para el vector, se puede borrar un elemento utilizando el iterador. El iterador luego señalará el siguiente elemento, que estaba allí antes de que se produjera el borrado. El siguiente código borra 'B':

vectorvtr = 'a', 'b', 'c', 'd', 'e';
vector :: iterator q = vtr.comenzar();
++Q;
VTR.borrar (q);
para (int i = 0; icout<
cout<cout<< *q <La salida es:

A C D E
C

No se puede borrar ningún elemento de la matriz, aunque se puede cambiar.

Claro

Se pueden eliminar todos los elementos del vector, con su función miembro clara (), como sigue:

vectorvtr = 'a', 'b', 'c', 'd', 'e';
VTR.claro();
para (int i = 0; icout<

La salida no es nada. Lo mejor que hay que ver con la matriz es reemplazar todos los elementos con algún valor predeterminado. Con el entero, el valor predeterminado es 0. El siguiente código ilustra:

int arr [] = 1, 2, 3, 4, 5;
para (int i = 0; i<5; i++)
arr [i] = 0;

para (int i = 0; i<5; i++)
cout<

La salida es:

0 0 0 0 0

Con el carácter, el valor predeterminado es el carácter nul, \ 0. El siguiente código ilustra:

char arr [] = 'a', 'b', 'c', 'd', 'e';
para (int i = 0; i<5; i++)
arr [i] = '\ 0';

para (int i = 0; i<5; i++)
cout<

La salida no muestra nada.

Intercambio

Incluso si dos vectores no son del mismo tamaño, sus elementos se pueden intercambiar, con la función miembro swap (). El siguiente código muestra esto:

vector vtr1 = 'a', 'b', 'c', 'd', 'e';
vector vtr2 = 'f', 'g', 'h';
VTR1.intercambio (VTR2);
cout<< "Content of new vtr1:" <para (int i = 0; icout<< vtr1[i] << ";

cout<cout<< "Content of new vtr:" <para (int i = 0; icout<< vtr2[i] << ";

Para que se intercambien dos matrices, deben tener la misma longitud. La matriz no tiene funciones de miembros (sin métodos). Entonces, para intercambiar elementos para matrices, se debe escribir un código de la siguiente manera:

char arr1 [] = 'a', 'b', 'c', 'd', 'e';
char arr2 [] = 'f', 'g', 'h', 'i', 'j';
para (int i = 0; i<5; i++)
char temp = arr1 [i];
arr1 [i] = arr2 [i];
arr2 [i] = temp;

cout<< "Content of new arr1:" <para (int i = 0; i<5; i++)
cout<< arr1[i] << ";

cout<cout<< "Content of new arr2:" <para (int i = 0; i<5; i++)
cout<< arr2[i] << ";

La salida es:

Contenido de nuevo ARR1:
F G H I J
Contenido de nuevo ARR2:
A B C D E

Tamaño

El tamaño del vector es devuelto por su función miembro, size (). Es decir, se determina en tiempo de ejecución. Ilustración:

vectorvtr = 'a', 'b', 'c', 'd';
int sz = vtr.tamaño();
cout<La salida es 4. El tamaño de la matriz debe indicarse al principio, como muestra el siguiente código:

char arr [4] = 'a', 'b', 'c', 'd';

También se puede hacer así:

char arr [7] = 'a', 'b', 'c', 'd';

Es decir, poner un número (tamaño) que es más alto que el supuesto tamaño (de 4 en este caso). Sin embargo, el número no debe ser menor que el número de elementos iniciales.

Matriz de longitud variable

Sin embargo, el tamaño de la matriz puede administrarse (no determinado) en tiempo de ejecución. En este caso, la matriz deberá crearse en una función o en una construcción similar. El siguiente programa ilustra esto:

#incluir
#incluir
usando el espacio de nombres STD;
vacío fn (int n)
char arr [n];
arr [0] = 'a';
arr [1] = 'b';
arr [2] = 'c';
arr [3] = 'd';
para (int i = 0; icout<
cout<
int main ()

fn (4);
regresar 0;

La salida es:

A B C D

Conclusión

Las principales diferencias entre el vector y la matriz son las siguientes: el tamaño (longitud) de un vector se puede aumentar naturalmente, pero el de una matriz se fija y no se puede aumentar. Los elementos se pueden insertar dentro de un vector, pero no se pueden insertar dentro de una matriz. Los elementos se pueden agregar al final del vector, pero no se pueden agregar al final de la matriz. El vector es una clase de la que se instancian otros objetos vectoriales, pero la matriz es un puntero constante a una secuencia de datos del mismo tipo. El vector tiene métodos (funciones miembros), pero la matriz no lo hace, por lo que el vector se denomina estructura de datos. Mientras que el puntero se puede usar con la matriz, los iteradores se usan con el vector. Un iterador es un puntero elaborado. La matriz muestra su incapacidad o tiene una forma contundente o engorrosa de lograr el mismo objetivo para cada diferencia.