Advertisement
informaticage

Utilizzo degli iteratori in C++

Oct 9th, 2021 (edited)
1,315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.01 KB | None | 0 0
  1. #include <vector>
  2. #include <algorithm>
  3. #include <iostream>
  4.  
  5. int main()
  6. {
  7.     // Insieme di N numeri distinti
  8.     // Verificare la presenza di duplicati
  9.  
  10.     // int -> 32 (-(2^16), 2^16 - 1)
  11.     size_t N;
  12.     std::cin >> N;
  13.  
  14.     // int v[N]; oppure int *v = new int[N]; (old school)
  15.     std::vector<int> v(N);
  16.  
  17.     // Old school
  18.     // for(size_t i = 0; i < N; i++) {
  19.     //     std::cin >> v[i];
  20.     // }
  21.  
  22.     // Iteratore esplicito
  23.     // 3 passi:
  24.     // definisco un iteratore (l'indirizzo di memoria) del primo elemento del vector
  25.     // finchè l'iteratore non corrisponde all'indizzo di memoria dell'ultimo elemento del vector allora non ho finito
  26.     // Ogni passo incremento l'iteratore di 1 (scorro di sizeof(int) (se è un vector di interi)) la memoria
  27.     // for(std::vector<int>::iterator it = v.begin(); it != v.end(); it++) {
  28.     //     std::cin >> *it;
  29.     // }
  30.  
  31.     // // Parto dal primo elemento
  32.     // std::vector<int>::iterator it = v.begin();
  33.  
  34.     // // finchè non arrivo alla fine
  35.     // while(it != v.end()) {
  36.     //     // Faccio qualcosa con l'iteratore tipo leggerlo o scriverci sopra
  37.     //     std::cin >> *it;
  38.  
  39.     //     // una volta fatto lo incremento per passare al prossimo elemento del vector
  40.     //     it++;
  41.     // }
  42.  
  43.     // for(std::vector<int>::iterator it = v.begin(); it != v.end(); it++) {
  44.     //     std::cout << *it << ",";
  45.     // }
  46.  
  47.     // Utilizzo dell'iteratore implicito
  48.     for (int &x : v)
  49.     {
  50.         // prima volta x = v[0]
  51.         // seconda volta x = v[1]
  52.         // ...
  53.         // finchè x != v.end()
  54.         std::cin >> x;
  55.     }
  56.  
  57.     std::vector<int> bucket;
  58.     for (int x : v) // per ogni x dentro v // for (int i = 0; i < v.size; i++) { int x = v[i]; ... }
  59.     {
  60.         if(std::find(bucket.begin(), bucket.end(), x) != bucket.end()) {
  61.             std::cout << "Duplicate: " << x << std::endl;
  62.         } else {
  63.             bucket.push_back(x);
  64.         }
  65.     }
  66.  
  67.     // i  0 1 2 3  4  5
  68.     // v: 3 2 7 1 [3] 5
  69.     // bucket: 3 2 7 1
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement