c++ ile foreach döngüsü?

c++ ile foreach döngüsü?

chrome_nickel

arkadaşlar, bütün internetin altını üstüne getirdim ama ilginç bir şekilde şu foreach tipi döngünün c++´da nasıl kullanıldığını bulamadım. onbinlerce sayfa döküman taradım ama birisi kalkıpda daha yok kardeşim kullanamıyorsun da yazmamış.yada benim kafa basmadı. php veya perl gibi daha yüzeysel dillerde şu şekilde oluşturulan bir döngüyü, c++ ile nasıl elde edebilirim?

php´de şöyle
foreach(dolardizi_degisken as dolaricerik)
{
// icerik ile her ne yapmak istiyor isen
}

bu döngü´de içeriği yada yapısı ne olursa olsun, her döngüde dizinin bir sonraki elemanının verisi dolaricerik değişkenine aktarılıyor ve böylece her eleman üzerinde ayrı ayrı işlem yapabiliyorsunuz. dizi değişkenin içeriğinde kaç adet eleman olduğunu bilmeniz gerekmiyor.

c++ ile bunun gibi bir döngü oluşturabilir miyim? yada, bir dizi değişkenin içinde kaç eleman bulunduğunu öğrenebilir miyim?
yani ne bilim mesela count() gibi bi fonksiyon var mı?

opengl ile bir sahne sınıfı oluşturucam ama poligonların vertex sayıları değişken olabileceğinden her poligon için aynı vertex sayısını tanımlamakla sahne esnekliği kaybolmuş olucak,her poligon oluşumunda vertex sayısını poligon sınıfına kaydetmek mantıklı olabilir. ama foreach gibi bir fonksiyonun varlığı olması gerektiği beynimden çıkmıyor.

amacımı da anlatayım belki farklı çözümleri olan arkadaşlar vardır :

sahne
|
|---nesne
| |
| |---poligon0
| | |
| | |---vertex0
| | |---vertex1
| | |---vertex2
| | |---vertex3
| | |---vertex4
| | |---vertex5
| | |---vertex6
| |
| |---poligon1
| | |
| | |---vertex0
| | |---vertex1
| | |---vertex2
| |
| |---poligon2
| | |
| | |---vertex0
| | |---vertex1
| | |---vertex2
| | |---vertex3
| | |---vertex4


ilgili fonksiyonun görevi ---

nesneciz{

poligon_sayan_dongu(donguparametresi=PoligonNo)
{
vertex_sayan_dongu(donguparametresi=SiradakiVertexNo)
{
VertexCiz(Nesne.poligonlar[PoligonNo].vertexler[SiradakiVertexNo]);
}

}
}

gibisinden bir döngüye ihtiyacım var. ama yapmam gereken, kaç poligon olduğunu bilmeden döngü yaptırtmak.

2006-04-14 10:50:06

Cvp

j-joey

c++´da dizilerin eleman sayıları sabittir, önceden tanımlarsın. esnek diziler istiyorsan "vector"leri incele.

foreach benzeri bir döngüyü elle oluşturman gerekiyor:

örneğin:

// kodun başına vektör kütüphanesini ekliyorsun,
#include <vector>

//.....
//.....

vector<int> bizimVektor(20); // 20 elemanlı vektör
int v, i

// bazı değerler yazalım vektöre:

for(i=0; i<bizimVektor.size(); i++) bizimVektor=i*i;

// içeriğini yazalım: (foreach gibi çalıştırıyoruz)
for(i=0, v=0; i<bizimVektor.size(); i++, v=bizimVektor) cout << v << " ";
cout << "

";

// eleman ekleyelim:
for(i=0; i<10; i++) bizimVektor.push_back(i + 10);

// tekrar içeriği yazalım:
for(i=0, v=0; i<bizimVektor.size(); i++, v=bizimVektor) cout << v << " ";
cout << "

";

// içeriği mıncıklayalım:
for(i=0; i<bizimVektor.size(); i++) bizimVektor /= 2

// tekrar içeriği yazalım:
for(i=0, v=0; i<bizimVektor.size(); i++, v=bizimVektor) cout << v << " ";
cout << "

";

//.....
//.....

2006-04-04 20:09:43

Cvp

j-joey

bu arada c/c++ ile ilgili süper bi kaynak: Herb Schildt´in Borland C++ Builder - The Complete Reference adlı kitabı.

2006-04-04 20:11:34

Cvp

chrome_nickel

teşekkür ederim. anlaşılan o ki tek başına çıkılmaz bu işin içinden :) prof bi uzmana yaptırtmak en iyisi...

2006-04-12 04:31:45

Cvp

chrome_nickel

yok sadece o değil daha bir çok konu var :)... benim kafa basar algoritmaya ama oturup kod´a dökemez işte

2006-04-12 22:29:49

Cvp

XxNEOxX

c/c++ ´dan uzun bir süredir uzak kaldım ama önceden belli olmayan ya da değişken yapılı diziler için araştırman gereken anahtar kelime "Pointer" olması gerekiyor...

2006-04-14 02:10:40

Cvp

j-joey

bu arada vector, list, stack, map gibi container classları için algorithms kütüphanesi ile for_each geliyor.

2006-04-14 10:50:06