? Matrizes em programação de computadores são coleções ou seqüências de valores contidos em um único nome de variável. Estas estruturas de dados permitem que os programadores para representar séries de dados ou listas de dados para uma variedade de propósitos, tais como classificação ou iteração. No entanto, em muitas linguagens de programação , como C /C + +, matrizes programadores devem declarar , tamanhos de matriz imutáveis estáticas. Usando técnicas de alocação de memória em uma linguagem como C + + , o programador pode criar dinamicamente matrizes ou mesmo redimensionar essas matrizes durante a execução do programa. Arrays
em linguagens de baixo nível , como C ou C + + , as matrizes são estáticos. Uma vez declarado com um valor de tamanho , essa matriz será sempre manter esse tamanho. O compilador atribui um bloco de memória contínuo para a matriz . Quaisquer outras funções ou variáveis que precisam de memória será colocada depois da matriz. Assim, a matriz não pode mudar de tamanho sem sobrescrever os dados que o segue. Assim, por exemplo , uma vez que um programador declara uma matriz com vinte espaços , essa matriz terá sempre vinte espaços , sejam eles usados ou não , para a vida da estrutura de dados .
Alocação de memória em o heap
Para contornar esta limitação , no entanto , os programadores podem alocar memória no heap. Normalmente, as variáveis e matrizes declaradas em um programa ou função são colocados na pilha, o que representa essencialmente a memória de curto prazo. Uma vez que o tempo de vida da função da matriz existe em revestimentos , a matriz é excluído . Ao usar a palavra-chave " novo " , no entanto , o programador pode recolher a memória da pilha , o que é a memória a longo prazo que existe fora da função que declara a matriz . Além disso , o programador pode usar o Heap para declarar matrizes dinamicamente.
Matrizes dinâmicas
com matrizes , o programador tem de declarar o tamanho da matriz em declaração. Este tamanho deve ser representado por um valor constante , ou uma variável constante ou um número inteiro . No entanto, usando o operador "new" , o programador pode usar variáveis regulares para matrizes de tamanho, eo usuário ainda pode inserir o valor destas variáveis durante o tempo de execução. O exemplo a seguir mostra a diferença :
int main () { int
arr [ 5] //nova matriz , deve ser dimensionado com tamanho constante valueint = 5; int * Dynamic_Array = new int [ tamanho ]; //tamanho da matriz é dinâmico
redimensionamento Arrays
Com essas matrizes dinâmicas , o programador pode criar matrizes que podem ser redimensionadas . A classe "vector " representa uma matriz de expansão dinâmica ou diminuindo essa vantagem taks de matrizes dinâmicas . O exemplo a seguir ilustra como criar uma matriz simples que cresce em tamanho maior :
int main () {
int * arr = new int [ 5]; int new_size = 10; < br >
arr [ 0] = 1; arr [1] = 2;
/* redimensionar * /int * arr2 = new int [ new_size ];
arr2 [0] = arr [ 0]; arr2 [1] = arr [1];
delete [ ] arr ; arr = arr2 ;
retornar 0 ;}