Para codificar um vetor em C ++, a biblioteca vetorial deve ser incluída no programa. A biblioteca vetorial possui a classe vetorial a partir da qual os objetos vetoriais podem ser instanciados (criados).
O programa em que todas as amostras de código deste artigo começa com:
#incluirUm vetor de cordas é usado.
Conteúdo do artigo
- Vetor de retorno pelo nome do vetor normal
- Retornando um vetor literal
- Retornando uma referência de vetor
- Retornando um ponteiro vetorial
- Conclusão
Vetor de retorno pelo nome do vetor normal
Que o vetor de interesse seja:
vetorO vetor é uma lista de itens em um pequeno supermercado. O nome, loja deste vetor, deve ser enviado como um argumento para uma função, cujo parâmetro é um vetor, mas com o nome, VTR. A função do interesse pode ser:
vetorObserve o tipo de retorno da definição de função. O nome do vetor é a loja. Este é o argumento para a chamada de função. O parâmetro para a função correspondente ao vetor é:
vetorObserve que o argumento para a função e o nome do parâmetro são diferentes (eles ainda podem ser os mesmos). Assim que a função começar a executar, a seguinte declaração é feita:
vetorEsta declaração é equivalente às duas declarações a seguir:
vetorE assim, VTR é uma cópia do vetor, armazenamento. Neste ponto, existem dois vetores com o mesmo conteúdo na memória para o programa. Uma função principal C ++ apropriada para o código pode ser:
int main ()Observe que o Word Store é o argumento da chamada de função. Quando a função é chamada, duas cópias do mesmo conteúdo vetorial ocorrem na memória. A função (chamada) retorna um vetor, que é recebido por outro vetor, v. Quando o programa terminar, há três vetores da mesma cópia na memória. Essas três cópias do mesmo conteúdo podem ser reduzidas a uma cópia usando um vetor de referência ou vetor de ponteiro. A saída para o programa acima é:
pão, carne, arroz, molho de tomate, queijo,
Retornando um vetor literal
Hoje (em 2022), um vetor literal é o mesmo que uma matriz literal. Este literal é chamado de Initializer_list, hoje em C++. Portanto, retornar um vetor literal por uma função é o mesmo que devolver um Initializer_list. Deixe o initLializer_list ser:
"pão", "carne", "arroz", "molho de tomate", "queijo"Deixe a definição da função para retornar o Initializer_list ser,
vetorO Initializer_list é composto no local na declaração de devolução e devolvido. A definição de função não tem parâmetro, mas tem o mesmo tipo de retorno que seu equivalente na seção anterior. Deixe a principal função C ++ ser:
int main ()A chamada de função, desta vez, não tem argumento, mas o valor de retorno é recebido pelo mesmo vetor e tipo da seção anterior.
Quando o programa estiver concluindo, haveria duas cópias do mesmo vetor na memória? Não. Haveria apenas uma cópia, que é V. O Initializer_list é um tipo de expressão, chamado Rvalue. Quando esse tipo de expressão não é mais necessário na memória, ela pode ser apagada por C ++ para ter mais espaço de memória? Não é importante se permanece na memória depois de ter sido usado enquanto o programa continua a executar. Seria apagado se seu espaço fosse necessário. A saída do programa é:
pão, carne, arroz, molho de tomate, queijo,
Retornando uma referência de vetor
O programa aqui fará o que o primeiro programa acima fez, mas apenas com uma cópia do mesmo vetor. Haverá três nomes diferentes para o mesmo vetor, embora. Que o vetor de interesse seja:
vetorObserve a presença e a posição de & no parâmetro. Isso significa que o VTR é um vetor referenciado (sinônimo), e não uma cópia do argumento a ser enviada. Observe a presença e a posição de & no tipo de retorno. Isso significa que a referência (sinônimo de um vetor será devolvida pela função. Observe que a declaração interna, "Return vtr;" não tem &. Deixe a função principal C ++ ser:
int main ()A assinatura da definição da função e a declaração de chamada de função são:
vetore
vetorrespectivamente. Nota novamente, a presença e a posição de &, no tipo de retorno da definição de função. Observe a presença e a posição de & na declaração de chamada de função. O argumento da chamada de função é o nome comum do vetor, armazenamento. A função retorna uma referência e é recebida por um ponteiro, v.
E assim, existem três variáveis diferentes no programa, todas se referindo ao mesmo local de memória vetorial (a função retornada & VTR, que é um sinônimo de loja). A saída é:
pão, carne, arroz, molho de tomate, queijo,Retornando um ponteiro vetorial
O programa aqui fará o que o primeiro programa acima fez, mas apenas com uma cópia do mesmo vetor. Haverá três nomes diferentes para o mesmo vetor. Que o vetor de interesse seja:
vetorObserve a presença e a posição de * no parâmetro. Isso significa que o VTR é um vetor de ponteiro, e não uma cópia de qualquer argumento vetorial a ser enviado. Observe a presença e a posição de * no tipo de retorno. Novamente, observe que a declaração interna "retorna VTR;" não tem e ou *. Deixe a função principal C ++ ser:
int main ()A assinatura da definição da função e a declaração de chamada de função são:
vetore
vetorrespectivamente. Observe a presença e a posição de * no tipo de retorno da definição de função. Observe a presença e a posição de & na declaração de chamada de função; está na frente do argumento, armazenar, e não na frente de Fn (), que não possui & ou *. A função retorna uma referência e é recebida por um ponteiro, v.
E assim, existem três variáveis diferentes no programa, todas se referindo ao mesmo local de memória vetorial. A saída é:
pão, carne, arroz, molho de tomate, queijo,Conclusão
Uma função pode retornar um vetor pelo seu nome normal. Uma função pode retornar um vetor literal (Initializer_list), a ser recebido por um vetor normal (nome). Um vetor pode retornar uma referência de vetor, a ser recebida por um ponteiro vetorial. Um vetor pode retornar um ponteiro vetorial, ainda a ser recebido por outro ponteiro vetorial.