Qual é a diferença entre um vetor e uma matriz em c++?

Qual é a diferença entre um vetor e uma matriz em c++?
Existem muitas diferenças entre um vetor e uma matriz em C++. No entanto, as principais semelhanças são muito importantes. As principais semelhanças são que ambas são uma lista e cada uma com uma sequência de dados do mesmo tipo. As principais diferenças são as seguintes: o tamanho de um vetor (comprimento) pode ser aumentado naturalmente, mas o de uma matriz é fixo e não pode ser aumentado. Os elementos podem ser inseridos em um vetor, mas não podem ser inseridos em uma matriz. Os elementos podem ser anexados no final do vetor, mas não podem ser anexados no final da matriz. O vetor é uma classe da qual outros objetos vetoriais são instanciados, mas a matriz é um ponteiro constante para uma sequência de dados do mesmo tipo. O vetor tem métodos (funções de membro), mas a matriz não tem e, portanto, o vetor é chamado de estrutura de dados. Enquanto o ponteiro pode ser usado com a matriz, os iteradores são usados ​​com o vetor. Um iterador é um ponteiro elaborado.

Nenhum elemento pode ser incluído na frente da matriz. Com C ++ 17 e Superior, um elemento pode ser incluído na frente do vetor usando a função do membro emplace ().

Para o restante deste artigo, as diferenças entre o vetor e a matriz são ilustradas. Para cada ponto, a incapacidade da matriz é mencionada, ou sua maneira franca ou complicada de alcançar o mesmo objetivo é dada.

Conteúdo do artigo

  • Criando um vetor ou matriz
  • Tamanho aumentado
  • Inserção
  • Anexando
  • Apagar um elemento
  • Claro
  • Trocando
  • Tamanho
  • Conclusão

Criando um vetor ou matriz

Um vetor pode ser criado de várias maneiras. A maneira básica é a seguinte:

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

Correspondentemente, uma matriz seria criada da seguinte forma:

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

Observe a diferença nos operandos que estão à esquerda do operador de atribuição. O número de elementos para o vetor pode ser adicionado ou reduzido, mas o tamanho da matriz permanece fixo, 5 neste caso.

Para ter e usar um vetor em um programa, o programa deve começar com:

#incluir
usando namespace std;

Para ter e usar uma matriz em um programa, nenhuma diretiva pré -processadora é necessária.

Tamanho aumentado

O código a seguir mostra como um vetor de dois elementos é aumentado para quatro elementos, usando sua função de membro push_back ():

vetor vtr (2);
vtr [0] = 'a';
vtr [1] = 'b';
vtr.push_back ('c');
vtr.push_back ('d');

Este código deve estar em um corpo de função. Para a matriz, e como a matriz tem um tamanho fixo, crie uma matriz para o número máximo de elementos previstos, antes de adicionar os elementos usando o operador []. Exemplo:

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

Além disso, esse código deve estar dentro de um corpo de função.

Inserção

No código a seguir, um elemento é inserido na frente do elemento apontado pelo iterador, p:

vetorvtr = 'a', 'b', 'd', 'e';
vetor :: iterator p = vtr.começar();
++p;
++p;
char ch = 'c';
vtr.inserir (p, ch);
para (int i = 0; icout<

A saída é:

A B C D E

A primeira declaração do código cria o objeto vetorial. 'C', que deveria estar na frente de 'D' por ordem alfabética, está ausente aqui. A segunda declaração retorna um iterador que aponta para o primeiro elemento do vetor. As próximas duas declarações aumentam o ponteiro para apontar para 'd'. A declaração após atribuir 'c' ao CH. Nesse segmento de código, a última declaração insere 'C' na frente de 'D', usando o iterador.

Quanto à matriz, não há como um elemento ser inserido. Devido a limitações como essa para a matriz, o vetor e outros contêineres foram projetados.

Nota: a função de membro insert () também pode ser usada para inserir um elemento na frente de um vetor.

Anexando

Anexar significa adicionar elementos na parte traseira. A função de membro push_back () pode ser usada para adicionar elementos na parte traseira do vetor - veja acima. A matriz não pode ser anexada a. A única maneira de contornar esse problema para a matriz é criar uma matriz para o tamanho máximo previsto. Coloque em elementos desde o início. Então algum espaço (células) será deixado para trás na matriz. Então, se houver necessidade de adicionar elementos na parte traseira, ajuste os elementos (valores) nos espaços por trás que estão vazios (que têm valores padrão).

Apagar um elemento

Para o vetor, um elemento pode ser apagado usando o iterador. O iterador apontará para o próximo elemento, que estava lá antes que a apagamento tenha ocorrido. O código a seguir apaga 'B':

vetorvtr = 'a', 'b', 'c', 'd', 'e';
vetor :: iterator q = vtr.começar();
++q;
vtr.apagar (q);
para (int i = 0; icout<
cout<cout<< *q <A saída é:

A C D E
C

Nenhum elemento da matriz pode ser apagado, embora possa ser alterado.

Claro

Todos os elementos do vetor podem ser removidos, com sua função de membro clear (), como segue:

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

A saída não é nada. A melhor coisa a fazer com a matriz é substituir todos os elementos por algum valor padrão. Com o número inteiro, o valor padrão é 0. O código a seguir 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<

A saída é:

0 0 0 0

Com o personagem, o valor padrão é o caráter nu, \ 0. O código a seguir 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<

A saída não mostra nada.

Trocando

Mesmo que dois vetores não tenham o mesmo tamanho, seus elementos podem ser trocados, com a função de membro da troca (). O código a seguir mostra o seguinte:

vetor vtr1 = 'a', 'b', 'c', 'd', 'e';
vetor vtr2 = 'f', 'g', 'h';
vtr1.troca (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 duas matrizes a serem trocadas, elas devem ter o mesmo comprimento. A matriz não possui funções de membro (sem métodos). Então, para trocar elementos por matrizes, um código deve ser escrito da seguinte maneira:

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] << ";

A saída é:

Conteúdo do novo ARR1:
F g h i j
Conteúdo do novo ARR2:
A B C D E

Tamanho

O tamanho do vetor é retornado por sua função de membro, tamanho (). Isto é, é determinado em tempo de execução. Ilustração:

vetorvtr = 'a', 'b', 'c', 'd';
int sz = vtr.tamanho();
cout<A saída é 4. O tamanho da matriz deve ser indicado no início, como mostra o código a seguir:

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

Também pode ser feito assim:

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

Isto é, colocando um número (tamanho) maior que o suposto tamanho (de 4 neste caso). No entanto, o número não deve ser menor que o número de elementos iniciais.

Matriz de comprimento variável

O tamanho da matriz pode, no entanto, ser dado (não determinado) no tempo de execução. Nesse caso, a matriz deverá ser criada em uma função ou em algum construto semelhante. O programa a seguir ilustra o seguinte:

#incluir
#incluir
usando namespace std;
void 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);
retornar 0;

A saída é:

A B C D

Conclusão

As principais diferenças entre o vetor e a matriz são as seguintes: o tamanho (comprimento) de um vetor pode ser aumentado naturalmente, mas o de uma matriz é fixo e não pode ser aumentado. Os elementos podem ser inseridos em um vetor, mas não podem ser inseridos em uma matriz. Os elementos podem ser anexados no final do vetor, mas não podem ser anexados no final da matriz. O vetor é uma classe da qual outros objetos vetoriais são instanciados, mas a matriz é um ponteiro constante para uma sequência de dados do mesmo tipo. O vetor tem métodos (funções de membro), mas a matriz não tem e, portanto, o vetor é chamado de estrutura de dados. Enquanto o ponteiro pode ser usado com a matriz, os iteradores são usados ​​com o vetor. Um iterador é um ponteiro elaborado. A matriz mostra sua incapacidade ou tem uma maneira franca ou complicada de alcançar o mesmo objetivo para cada diferença.