Pratica 5
Aggregazione dei criteri
Aperto: mercoledì, 20 giugno 2018, 10:00
Data limite: martedì, 3 luglio 2018, 23:55
Templates
Você deve desenvolver um template de classe para guardar os n maiores valores que lhe forem fornecidos. Os detalhes são apresentados nos ítens seguintes:
- O template deve ter o nome Largest. Portanto, será usado na forma, por exemplo, Largest<int> para lidar com valores int.
- O construtor de Largest deve aceitar um tamanho (tipo size_t), que será o número de maiores valores desejados.
- A classe deve ter um método put, que recebe um valor do tipo apropriado e o guarda, se ele for um dos maiores desejados. Este método não retorna nada.
- Outro método necessário é denominado retrieve, que não recebe parâmetros e retorna um std::vector de elementos do tipo apropriado, com a lista dos maiores valores, do maior (no índice 0) para o menor (no último elemento).
- Valores que forem inseridos mais de uma vez com put não são considerados (não há duplicação de valores, isto é, queremos os n maiores valores distintos fornecidos).
- Se retrieve for chamado antes que n valores distintos tenham sido fornecidos, então ele simplesmente retorna os valores de que dispõe.
- A implementação só pode usar, do tipo dos elementos a serem inseridos, os operadores de igualdade e o operador < (isto é, se você precisar comparar a > b, deve comparar na forma b < a, por exemplo). Veja o exemplo apresentado.
- O código deve estar num arquivo denominado largest.h.
- É fornecido (abaixo) um programa que usa esse template, que deve compilar e executar sem alteração. Você também pode usar esse código para tirar dúvidas sobre o funcionamento do template.
- Não é permitido o uso de algoritmos de ordenação (estamos supondo que o número de valores fornecidos pode ser muito alto, o que inviabiliza a implementação com algoritmos de ordenação).
- O código de teste precisa ser compilado com std=c++17 (com um compilador recente).
- Em caso de templates, o C++ não permite a compilação separada. Todo o código deve ser inserido no arquivo .h.
- No código de teste existem algumas novidades que eu não discuti em classe. Acredito que vocês podem entender o que elas significam; senão, só perguntar.
- 19 giugno 2018, 15:22