fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. // Bu çok daha hoş şekilde, bir class veya struct kullanılarak yazılabilir.
  5. // İşin o tarafını sizlere bırakıyorum değerli arkadaşlar :)
  6. // Bu sefer bir de size_t tip güncellemesi yaptım, daha uygun çünkü.
  7. void eleman_ekle(int *&dizi, size_t &boyut, size_t &eleman_sayisi, int eleman) {
  8. // Dizi boyutunu artırmamız gerekiyor, tamamen dolmuş çünkü.
  9. if (boyut == eleman_sayisi) {
  10. const size_t eski_boyut = boyut;
  11. // Eğer boyut sıfır değilse 2 katına çıkar, sıfırsa 1 olsun.
  12. boyut = boyut ? boyut << 1 : 1; // Veya 2 * boyut, çok fark etmez
  13. int *yeni_dizi = new int[boyut];
  14. for (int i = 0; i < eski_boyut; i++) {
  15. yeni_dizi[i] = dizi[i];
  16. }
  17.  
  18. delete dizi;
  19. dizi = yeni_dizi;
  20. }
  21.  
  22. dizi[eleman_sayisi] = eleman;
  23. eleman_sayisi++;
  24. }
  25.  
  26. int main() {
  27. // Rastgelelik için seed'i saniyeye bağlı tanımlıyorum.
  28. srand(time(0));
  29.  
  30. cout << "Kac eleman eklensin? ";
  31. int eklenecek_eleman_sayisi;
  32. cin >> eklenecek_eleman_sayisi;
  33.  
  34. // https://w...content-available-to-author-only...s.org/measure-execution-time-function-cpp/
  35. auto start = chrono::high_resolution_clock::now();
  36.  
  37. size_t boyut = 0, eleman_sayisi = 0;
  38. int *dizi = new int[boyut];
  39. for (int i = 0; i < eklenecek_eleman_sayisi; i++) {
  40. int yeni_eleman = rand();
  41. eleman_ekle(dizi, boyut, eleman_sayisi, yeni_eleman);
  42. }
  43.  
  44. auto end = chrono::high_resolution_clock::now();
  45.  
  46. // Bu sefer milisaniye çok büyük geliyor :)
  47. // Mikrosaniye "us" ile ifade edilir. "Mikro" sembolü yerine "u" kullanılır.
  48. auto gecen_zaman_us = chrono::duration_cast<chrono::microseconds>(end - start).count();
  49.  
  50. // Memory leak olmasın :)
  51. delete dizi;
  52.  
  53. cout << eklenecek_eleman_sayisi << " eleman eklemek toplamda " << gecen_zaman_us << " mikrosaniye ("
  54. << gecen_zaman_us / 1000 << " ms) "
  55. << "surdu.\n ";
  56. }
Success #stdin #stdout 1.53s 529684KB
stdin
100000000
stdout
Kac eleman eklensin? 100000000 eleman eklemek toplamda 1534849 mikrosaniye (1534 ms) surdu.