Vídeo: Programar em C - Introdução Estruturas - Aula 39 2024
Os modelos de estrutura têm muitas utilizações interessantes, como a criação de um repositório de dados que não depende de um tipo específico. O exemplo do StructureTemplate mostra um desses usos.
#include usando namespace std; template struct Volume {T height; Largura T; Comprimento T; Volume () {altura = 0; largura = 0; length = 0;} T getvolume () {height de retorno * width * length;} T getvolume (T H, T W, T L) {height = H; width = W; comprimento = L; altura de retorno * largura * comprimento;}}; int main () {Volume primeiro; cout << "primeiro volume:" << primeiro. getvolume () << endl; primeiro. altura = 2; primeiro. largura = 3; primeiro. comprimento = 4; cout << "primeiro volume:" << primeiro. getvolume () << endl; Volume segundo; Cout << "segundo volume:" << segundo. getvolume (2. 1, 3. 2, 4. 3) << endl; cout << "height:" << segundo. altura << endl; cout << "width:" << segundo. largura << endl; Cout << "length:" << segundo. comprimento << endl; return 0;}
Neste caso, a estrutura contém valores de altura, largura e comprimento que o código pode usar para determinar o volume. A estrutura inclui um construtor para inicializar os valores, portanto, mesmo se alguém chamar getvolume () sem inicializar a estrutura, nada de ruim acontecerá.
A estrutura permite acesso independente de cada um dos valores de dados. Você pode configurá-los ou buscá-los conforme necessário.
A função getvolume () está sobrecarregada. Você pode chamá-lo com ou sem valores de entrada. O código no main () testa a estrutura completamente. Veja o que você vê como resultado deste exemplo:
Primeiro volume: 0 Primeiro volume: 24 Segundo volume: 28. 896 Altura: 2. 1 Largura: 3. 2 Comprimento: 4. 3
Você pode usar estruturas para outro propósito interessante. O padrão C ++ diz que você não pode criar um modelo typedef. Por exemplo, o código a seguir produz um erro quando você tenta compilá-lo:
template typedef map MyDef;
Quando você tenta compilar este código no Código:: Blocks, você vê o seguinte erro:
error: declaração de modelo de 'typedef'
No entanto, você pode definir um typedef dentro de um modelo de estrutura. O código de exemplo do StructureTemplate2 aqui mostra como.
#include #include usando namespace std; estrutura do modelo MyDef {typedef map Type;}; int main () {MyDef:: Tipo de casamento; Casamentos ["Tom"] = "Suzy"; Casamentos ["Harry"] = "Harriet"; cout << marriage ["Tom"] << endl; cout << casamentos ["Harry"] << endl; return 0;}
Este exemplo supera as limitações de C ++ colocando o typedef dentro da estrutura, MyDef. A mesma estrutura pode conter qualquer número de entradas typedef.
Usar um typedef dessa maneira facilita o trabalho com o mapa.Tudo o que você precisa se preocupar é o tipo de valor - o tipo de chave já está definido como string.