C++ da dizinin eleman sayisini belirleme?

Endorfin35+

Kayıtsız Üye
Katılım
1 Mayıs 2020
Mesajlar
4,212
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:

C++:
#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ç:

C++:
[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
5,984
Mesajlar
102,078
Üyeler
2,516
Son üye
adu33

Son kaynaklar

Son profil mesajları

deneyci wrote on hakan8470's profile.
Sibonge uNkulunkulu ngokuhlukahluka asinike kona.

Bu hangi dil? :)
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
Back
Top