In le programmation, un matrice o vector (appellate in anglese array) es un zona de immagazinage continue, que contine un serie de elementos del mesme typo, le elementos del matrice. Ab le puncto de vista logic un matrice pote esser vidite como un ensemble de elementos ordinate in cauda (o rangos e columnas si illo ha duo dimensiones).

Vector
subclasse de: Structura de datos, collection[*]


Commons: Array data structure
Matrice unidimensional con dece elementos.

In principio, on pote considerar que tote le matrices son de un dimension, le dimension principal, sed le elementos del dicite cauda pote esser a lor vices matrices (un processo que pote esser recursive), lo que nos permitte de parlar del existentia de matrices multidimensional, ben que le plus facile a imaginar es los de un, duo, e tres dimensiones.

Iste structuras de datos es adequate pro situationes in le quales le accesso al datos se realisa de forma aleatori e impredicibile. Al contrario, si le elementos pote se trovar ordinate e on va a usar un accesso sequential il esserea plus adequate de usar un lista, durante que iste structura pote cambiar de mesura facilemente durante le execution de un programma.

Indices modificar

Tote vector se compone de un numero determinate de elementos. Cata elemento es referentiate per le position que illo occupa intra le vector. Le dicite positiones es appellate indice e sempre es correlative. Il ha tres manieras de indexar le elementos de un matrice:

  • Indexation base-zero (0): In iste modo le prime elemento del vector es le componente zero ('0') le qual, in altere parolas, ha le indice '0'. In consequentia, si le vector ha 'n' componentes le ultime habera como indice le valor 'n-1'. Le linguage C es un exemplo typic que usa iste modo de indexation.
  • Indexation base-un (1): In iste forma de indexation, le prime elemento del matrice ha le indice '1' e le ultime ha le indice 'n' (pro un matrice de 'n' componentes).
  • Indexation base-n (n): Iste es un modo versatile de indexation in le qual le indice del prime elemento pote esser seligite liberemente, in alcun linguages de programmation on permitte que le indices pote esser negative e include de qualcunque typo scalar (anque catenas de characteres).

Notation modificar

Le representation de un elemento in un vector se face per le identificator del vector sequite del indice inter parentheses quadrate, parentheses o claves:

Notation Exemplos
vector[indice_1,indice_2...,indice_N] (Java, Lexico, Perl, etc.)
vector[indice_0][indice_1]...[indice_N] (C, C++, PHP, etc.)
vector(indice_1,indice_2...,indice_N) (BASIC)

Ben que multe vices in pseudocodice e in libros de mathematica on los representa como litteras accompaniate de un subindice numeric que indica le position al qual on vole acceder. Per exemplo, pro un vector "A":

  (vector unidimensional)

Forma de accesso modificar

Le maniera de acceder al elementos del matrice es directe; isto significa que le elemento desirate es obtenite a partir de su indice e illo non debe vader a cercar lo "elemento per elemento" (in contraposition, in le caso de un lista, pro arrivar, per exemplo, al tertie elemento illo debe acceder al duo anteriores o immagazinar un punctator que permitte acceder rapidemente a iste elemento).

Pro travaliar con vectores multe vices il es precise de percurrer los. Isto se realisa a fortia de buclas. Le sequente pseudocodice monstra un algorithmo typic pro percurrer un vector e applicar un function ' ' a cata un del componentes del vector (le indices va ab 0):

i = 0
durante_que (i < longitude)
    #Se realisa alcun operation con le vector in le i-esime position
    f(v[i])
    i=i+1
fin_durante_que

Vectores dynamic e static modificar

Habitualmente un vector ha un quantitate fixe de memoria assignate, ben que dependente del typo de vector e del linguage de programmation un vector poterea haber un quantitate variabile de datos. In iste caso, illo se denomina un vector dynamic, in oposition, a un vector con un quantitate fixe de memoria assignate se denomina un vector static.

Le uso de vectores dynamic require de realisar un gestion de memoria dynamic appropriate. Un uso incorrecte del vectores dynamic, o melior dicite, un mal gestion del memoria dynamic, pote conducer a un fuga de memoria. Le uso de vectores dynamic deberea sempre liberar le memoria usate quando illo non es plus longe usate.

Linguages plus moderne e de plus alte nivello con un mechanismo denominate recollector de immunditias (como es le caso de Java) permitte que le programma decide si illo debe liberar le spatio reguardante si illo va usar in le futuro o non un determinate objecto.

Exemplos in C modificar

  • Declaration in C/C++ de un vector static.
int v[5];
int i;
for (i=0 ; i<5 ; i++)
{	v[i] = 2*i;
}
  • Declaration in C++ de un vector de STL:
#include <vector>

vector<int> v; // Si on non specifica le mesura initial es 0

for (int i=0 ; i<5 ; i++)
{	v.push_back(2*i); // inserta un elemento al fin del vector
}

Le exemplo anterior se trova facite pro le linguage C++. In C, pro crear vectores dynamic on deberea usar le instructiones malloc Archived 2009-08-15 at the Wayback Machine e realloc Archived 2009-08-25 at the Wayback Machine pro reservar del memoria de forma dynamic (vider libreria stdlib.h), e le function per free Archived 2009-08-25 at the Wayback Machine pro liberar le memoria usate.

  • Resultato:
0 1 2 3 4
0 2 4 6 8

Le resultato del duo exemplos es le mesme vector

Vectores multidimensional modificar

In BASIC, Java e altere linguages il es possibile de declarar matrices multidimensional, comprendente los como un vector de vectores. In le dicte casos le numero de elementos del vector es le producto resultante de cata dimension.

Per exemplo, in le vector v(4,1) ha dece elementos, le numero de elementos se calcula del modo sequente: (0-4) * (0-1). Le elementos del prime dimension del vector contine cinque elementos va ab '0' al '4' e le secundo dimension ha duo elementos va ab '0' a '1'. Le elementos esserea accedite del maniera sequente:

elemento 1: (0,0)
elemento 2: (0,1)
elemento 3: (1,0)
...
elemento 8: (3,1)
elemento 9: (4,0)
elemento 10: (4,1)
 
Nota