fcamuso

Corso C++ 36 - funzioni sesta parte

Jun 15th, 2026
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.96 KB | None | 0 0
  1. import std;
  2.  
  3. double calcola_tolleranza() {return 0.2213;}
  4. class Manager {};
  5.  
  6. auto big_data()
  7. {
  8.   auto v = std::vector<int>(10000000);
  9.  
  10.   // elaborazione
  11.  
  12.   return v;
  13. }
  14.  
  15. auto stima_coefficiente()
  16. {
  17.    double coeff{};
  18.  
  19.    //logica che valorizza il coefficiente
  20.    return coeff;
  21. }
  22.  
  23. auto valuta_rischio()
  24. {
  25.    static const auto coefficiente_iniziale{stima_coefficiente()}; //NON VORREMMO CAMBIASSE PIU
  26.    
  27.    //logica che valuta la posizione ...
  28.  
  29.    return "descrizione valutazione";
  30. }
  31.  
  32. int test()
  33. {
  34.     auto count{ 10 };                
  35.     auto pi{ 3.14159f };            
  36.     auto name{ std::string{"C++"} };
  37.  
  38.     auto v1 = std::vector<int> {1,4,6}; //DA PREFERIRE
  39.     //std::vector<int> v1{1,4,6};
  40.  
  41.     /*std::unordered_map<std::string, std::vector<int>> mappa_utenti;
  42.     int tentativi{ 5 };
  43.     std::unique_ptr<Manager> gestore = std::make_unique<Manager>();*/
  44.  
  45.     auto mappa_utenti = std::unordered_map<std::string, std::vector<int>>{};
  46.     auto tentativi = int{ 5 };
  47.     auto gestore = std::make_unique<Manager>();
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.     auto tolleranza{calcola_tolleranza()};
  56.  
  57.  
  58.     //for (int i = 0; i < v1.size(); ++i) { ... }
  59.  
  60.  
  61.    return 0;
  62. }
  63.  
  64.  
  65. template <typename T>
  66. class Contenitore {
  67. public:
  68.     using Iteratore = T*;
  69.     Iteratore inizio();
  70. };
  71.  
  72. //template <typename T>
  73. //typename Contenitore<T>::Iteratore Contenitore<T>::inizio() {
  74. //    return nullptr;
  75. //}
  76.  
  77. template <typename T>
  78. auto Contenitore<T>::inizio() -> Iteratore { return nullptr;}
  79.  
  80. class Server {
  81. public:
  82.     // Tipo annidato per dimostrare la risoluzione dello scope
  83.     struct GestoreSessione {
  84.         int id_sessione;
  85.     };
  86.  
  87.     // Dichiarazioni dei metodi all'interno della classe
  88.     void avvia();
  89.     int ottieni_porta() const;
  90.     std::vector<std::string> utenti_attivi();
  91.     std::unique_ptr<GestoreSessione> crea_sessione(int id);
  92. };
  93.  
  94. //void Server::avvia() { /* ... */ }
  95. //int Server::ottieni_porta() const { return 8080; }
  96. //std::vector<std::string> Server::utenti_attivi() { return {}; }
  97. //std::unique_ptr<Server::GestoreSessione> Server::crea_sessione(int id) { return nullptr; }
  98.  
  99. auto Server::avvia() -> void { /* ... */ }
  100. auto Server::ottieni_porta() const -> int { return 8080; }
  101. auto Server::utenti_attivi() -> std::vector<std::string> { return {}; }
  102. auto Server::crea_sessione(int id) -> std::unique_ptr<GestoreSessione> { return nullptr; }
  103.  
  104. auto avvia = []() -> void {/* ... */};
  105.  
  106. // Trailing return type: 'Iteratore' è già nello scope di Contenitore
  107. auto main(int argc, char* argv[]) -> int
  108. {
  109.     if (argc != 3)
  110.     {
  111.         std::println("Sono richiesti esattamente due nomi di file da confrontare");
  112.         return 1;
  113.     }
  114.  
  115.     std::println("E' stato lanciato il programma {}", argv[0]);
  116.  
  117.     std::string file1 = std::string(argv[1]);
  118.     std::string file2{argv[2]};
  119.  
  120.     std::println("Sto confrontando {} con {} ...", argv[1], argv[2]);
  121.     std::println("Sto confrontando {} con {} ...", file1, file2);
  122.  
  123.    
  124. }
  125.  
Advertisement
Add Comment
Please, Sign In to add comment