PDA

Tam Sürümünü Görmek İçin : vektörlerin dizileri


PUNK
18/07/2005, 17:30
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 ?

PUNK
18/07/2005, 21:55
tuttuğum bir sayı ve var bu sayı arttıkça vektör dizisi bir vektör buyuyecek yapmak istediğim tam olarak bu

PUNK
19/07/2005, 00:23
olmıcak bişeymi sordum yada saçmaladımmı :)

sckz
19/07/2005, 00:30
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);
}

sckz
19/07/2005, 00:34
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..

PUNK
19/07/2005, 00:51
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

sckz
19/07/2005, 02:16
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
25/07/2005, 17:11
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..