C++ da dizinin eleman sayisini belirleme?

Endorfin35+

Kayıtsız Üye
Katılım
1 Mayıs 2020
Mesajlar
4,478
Kabaca 300 elemanli bir diziye ihtiyacim var. Istedigim kodu Pyhton ile yazarken diziye eleman ekle cikar yapmistim. Anladigim kadari ile c de dogrudan eleman ekleyerek diziyi genisletemiyoruz.

Simdi
Bastan 300 elemanli bir dizi tanimlayip yayla gibi kullanmakmi?

Yoksa
Ekleme ihtiyaci olunca döngüler ile dizi olusturup eski diziden yeni diziye aktarim ile diziyi genisletmek mi? Bu arada kod icinde degisken ile dizinin eleman sayisi belirlenirmi?

Yoksa zaten eleman ekleme var mi?
 
C++ dilinin kendi tanımında bir diziyi genişletmek veya daraltmak yok. Onun yerine malloc ailesini kullanarak belli büyüklükte bir hafıza alanı ayırıyorsun, sonra bu alanı büyütmek için realloc kullanıyorsun.

Eğer STL musibetine bulaşmak istiyorsan, STL'de dinamik array ve benzeri büyüyebilen veri yapıları için sınıflar var.
 
Bir dizideki eleman sayısını belirleme:

Kod:
#include <stdio.h>

static unsigned int int_dizi[860];

typedef struct
{
   unsigned char buffer[20];
   unsigned int size;
} SBUFFER;

static SBUFFER yapi_dizi[170];

static SBUFFER* yapi_dizi_ptr = yapi_dizi;

int main()
{
   printf("int_dizi byte boyutu   = %u\n", sizeof(int_dizi));
   printf("int_dizi eleman sayisi = %u\n", sizeof(int_dizi) / sizeof(int_dizi[0]));
   printf("\n");
   printf("yapi_dizi byte boyutu   = %u\n", sizeof(yapi_dizi));
   printf("yapi_dizi eleman sayisi = %u\n", sizeof(yapi_dizi) / sizeof(yapi_dizi[0]));
   printf("\n");
   printf("yapi_dizi_ptr pointer kendi byte boyutu      = %u\n", sizeof(yapi_dizi_ptr));
   printf("yapi_dizi_ptr pointer ilk eleman byte boyutu = %u\n", sizeof(yapi_dizi_ptr[0]));
   printf("yapi_dizi_ptr pointer ilk eleman byte boyutu = %u\n", sizeof(*yapi_dizi_ptr));

   return 0;
}

Bu programı benim linux makinada derleyince alınan sonuç:

Kod:
[ta@bonsai ~]$ g++ a.cpp
[ta@bonsai ~]$ ./a.out
int_dizi byte boyutu   = 3440
int_dizi eleman sayisi = 860

yapi_dizi byte boyutu   = 4080
yapi_dizi eleman sayisi = 170

yapi_dizi_ptr pointer kendi byte boyutu      = 8
yapi_dizi_ptr pointer ilk eleman byte boyutu = 24
yapi_dizi_ptr pointer ilk eleman byte boyutu = 24
[ta@bonsai ~]$
 
C++ dilinin kendi tanımında bir diziyi genişletmek veya daraltmak yok. Onun yerine malloc ailesini kullanarak belli büyüklükte bir hafıza alanı ayırıyorsun, sonra bu alanı büyütmek için realloc kullanıyorsun.

Eğer STL musibetine bulaşmak istiyorsan, STL'de dinamik array ve benzeri büyüyebilen veri yapıları için sınıflar var.

Ben bu STL konusuna hala tam anlamadım. Normal C deki stdio.h yerine C++ in iostream sınıfını kullandığımda STL mi kullanmış oluyorum?
 
STL çok daha kapsamlı bir kütüphane. iostream mevcut yüzlerce sınıftan sadece birisi.
 
Tamam simdi biraz oturmaya basladi.

O zaman soyle mi dusunmeliyim.

Temel islemlerler isin C fonksiyonlari
OOP icin c++ yetenekeri...
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
7,718
Mesajlar
128,461
Üyeler
3,117
Son üye
MekanikAdam

Son kaynaklar

Son profil mesajları

Python Geliştirmeye eklediğim yapay zeka sunucusu, yeni başlayanlar için roket etkisi
Bir insanın zeka seviyesinin en kolay tesbiti, sorduğu sorulardır.
yapay zeka interneti yedi bitirdi, arama motoru kullanan, forumlara yazan kaldı mı ?
Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
az bilgili çok meraklı
Back
Top