C++ da dizinin eleman sayisini belirleme?

Endorfin35+

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

Forum istatistikleri

Konular
8,430
Mesajlar
138,310
Üyeler
3,340
Son üye
hcetky

Son kaynaklar

Son profil mesajları

mechanic ayhanarican mechanic wrote on ayhanarican's profile.
https://www.allmystery.de almanca biliyorsan burada araştır. Yapay zekada çeviriyor gerçi.
Almanların matematik bilgisi daha iyi oluyor.
“Kendi yolunu çizen kişi, kimsenin izinden gitmez.” – Nietzsche
Kim İslâm’da güzel bir çığır açarsa (güzel bir alışkanlık başlatırsa), onun sevabı ve kendisinden sonra ona uyanların sevapları, onların sevaplarından hiçbir şey eksilmeksizin ona da yazılır.
erdemtr55 taydin erdemtr55 wrote on taydin's profile.
Merhaba Taydin bey,
Gruba spms serisi yapıcak mısınız?
ben 3 sargılı toroid ile 2 adet flyback sürücek bir devre yapmayı düşünüyorum.size soracak sorularım vardı?
Mutluluğun resmi illa güzel çizilmiş tablo olmak zorunda değil.Bazen basit bir çizgi,doğru bir renk,yada küçük bir detay
Back
Top