Tam Sürümünü Görmek İçin : vektörlerin dizileri
vector<int> s[3];
for(int i=0;i<3;i++){ s[i].push_back(i+1); } //
şeklinde her bir vektöre nesne ekleyebiliyorum . Peki Bu şekilde vektör dizisine yeni bir vektör daha ekleyebilirmiyim yani 3 vektörden oluşan s vektör dizisine bir vektör daha eklemek istiyorum nasıl yapabilirm bunu :dahi:
Volkan Uzun
18/07/2005, 17:38
typedef vector<int> vectIntArr
vector<VectIntArr>s[3] gibi mi ?
tuttuğum bir sayı ve var bu sayı arttıkça vektör dizisi bir vektör buyuyecek yapmak istediğim tam olarak bu
olmıcak bişeymi sordum yada saçmaladımmı :)
allah allah.. bu vektörler aynı tipte veri tutacaksa buna ne ihtiyaç var ki.. zaten belli bir nokta da birşeyler sabit olmak zorunda.. vektörlerin de vektörlerini oluşturmak garip geliyor nedense..
Birde şöyle bişi yazdığımda runtime hatası alıyorum :
const int max = 3;
vector< vector<int> * > abc;
for (int f=0; max != f ; ++f)
{
abc.push_back( new vector<int> );
for (int g=0; max != g; ++g)
abc[f]->push_back(g);
}
typedef vector<int> vectIntArr
vector<VectIntArr>s[3] gibi mi ?Burda int tipinde vectorleri tutan vektorden 3 tane oluşturuyorsun... sondaki [3] e gerek yok sanırım..
ben vektör dizisini normal dizi mantığıyla iki boyutlu matris oluşturmak amacı ile kullanacam ama bu matrisin hem satır sayısı hemde sutun sayısı belli deil program içersinde buyuyup kuculebilecek orneğin her bir vektor benim iki boyutlu matrisimde bir satırı ifade edecek ve ben gerektiğinde bu bu matristen satır silip ekleyebilecem bunu anlatmaya çalıştım
template <class T>
class Matris
{
public :
vector< vector<T> > & operator()()
{
return dizi_;
}
protected :
vector< vector<T> > dizi_;
};
int main()
{
Matris<int> gonul;
const int max = 3;
for (int f=0; max != f; ++f)
{
gonul().push_back(*(new vector<int>));
for (int g=0; max != g; ++g)
gonul()[f].push_back(g*f);
}
for (int f=0; max != f; ++f)
{
for (int g=0; max != g; ++g)
cout << gonul()[f][g] << ' ';
cout << endl;
}
return 0;
}
farklı veritipleri ile çalışabilsin diye baya bi dağıttım ortalığı.. ama sarhoşken en fazla bu kadar okunabilir kod yazabiliyorum..
bari açıklayayım kodumu :
önce farklı veritipi olayını template ile çözmeye çalıştım.. bunun için Matris diye bi sınıf oluşturdum.. bu sınıf için operator()() fonksiyonunu tanımladım.. bu üye fonksiyon ne yapıyor.. sadece sinif içerisindeki dizi_ nin referansını döndürmekten başka bişi yapmıyor (nokta operatorü ile dizi_ üyesine erişme garip geldiği için böle yaptım)..
main de gonul diye bi matris<int> tipinde bi nesne oluşturdum.. bunun içindeki dizi_ üyesine erişmek için de () operatorünü kullandım..
birinci for da vektörün içini doldurdum.. ikincisinde ise ekrana yazdım..
acehreli
25/07/2005, 15:41
Oncelikle, matrislerde ozellesmis kutuphaneler oldugunu ve onlardan yararlanmanizin daha iyi olacagini hatirlatirim. Suradan baslayabilirsiniz:
http://www.oonumerics.org/oon/
sckz, new kullandigin satirda gereksiz bir bellek kaybi var. Orada soyle yapabilirsin:
gonul().push_back(vector<int>());
Ali
sckz, new kullandigin satirda gereksiz bir bellek kaybi var. Orada soyle yapabilirsin:
gonul().push_back(vector<int>());Offf ya.. yaptığım aptallığa bakarmısınız..
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.