#include <bits/stdc++.h>
using namespace std;
// Bu çok daha hoş şekilde, bir class veya struct kullanılarak yazılabilir.
// İşin o tarafını sizlere bırakıyorum değerli arkadaşlar :)
// Bu sefer bir de size_t tip güncellemesi yaptım, daha uygun çünkü.
void eleman_ekle(int *&dizi, size_t &boyut, size_t &eleman_sayisi, int eleman) {
// Dizi boyutunu artırmamız gerekiyor, tamamen dolmuş çünkü.
if (boyut == eleman_sayisi) {
const size_t eski_boyut = boyut;
// Eğer boyut sıfır değilse 2 katına çıkar, sıfırsa 1 olsun.
boyut = boyut ? boyut << 1 : 1; // Veya 2 * boyut, çok fark etmez
int *yeni_dizi = new int[boyut];
for (int i = 0; i < eski_boyut; i++) {
yeni_dizi[i] = dizi[i];
}
delete dizi;
dizi = yeni_dizi;
}
dizi[eleman_sayisi] = eleman;
eleman_sayisi++;
}
int main() {
// Rastgelelik için seed'i saniyeye bağlı tanımlıyorum.
srand(time(0));
cout << "Kac eleman eklensin? ";
int eklenecek_eleman_sayisi;
cin >> eklenecek_eleman_sayisi;
// https://w...content-available-to-author-only...s.org/measure-execution-time-function-cpp/
auto start = chrono::high_resolution_clock::now();
size_t boyut = 0, eleman_sayisi = 0;
int *dizi = new int[boyut];
for (int i = 0; i < eklenecek_eleman_sayisi; i++) {
int yeni_eleman = rand();
eleman_ekle(dizi, boyut, eleman_sayisi, yeni_eleman);
}
auto end = chrono::high_resolution_clock::now();
// Bu sefer milisaniye çok büyük geliyor :)
// Mikrosaniye "us" ile ifade edilir. "Mikro" sembolü yerine "u" kullanılır.
auto gecen_zaman_us = chrono::duration_cast<chrono::microseconds>(end - start).count();
// Memory leak olmasın :)
delete dizi;
cout << eklenecek_eleman_sayisi << " eleman eklemek toplamda " << gecen_zaman_us << " mikrosaniye ("
<< gecen_zaman_us / 1000 << " ms) "
<< "surdu.\n ";
}