Witam chcialbym z tych 2 linijek zrobic jedna, tak aby nie wykorzystywac zmiennej pomocniczy
// w Klasie skladowa: vector < vector <float> > tab;
vector< vector<float> > pomocniczy ( m.w, vector<float>( m.k, m.domyslna ) );
m.tab = pomocniczy;
Reszta kodu:
istream &operator>>(istream & strumien, Matrix & m)
{
cout <<"Podaj liczbe wierszy: ", strumien >> m.w;
cout <<"Podaj liczbe kolumn: ", strumien >> m.k;
cout <<"Podaj wartosc domyslna: ", strumien >> m.domyslna;
vector< vector<float> > pomocniczy ( m.w, vector<float>( m.k, m.domyslna ) );
m.tab = pomocniczy;
return strumien;
}
Dziekuje za radę.
Pozdrawiam!
Tak się nie definicje operatorów strumieni!
Co jeśli strumien
nie jest konsolą, ale czymś innym? Plikiem, napisem (stringstream
) albo połączeniem sieciowym (np POCO)?
Ten operator mógłby wyglądać tak:
istream &operator>>(istream & strumien, Matrix & m)
{
int wiersze, kolumny, wartosc;
if (strumien >> wiersze >> kolumny >> wartosc) {
m.w = wiersze;
m.k = kolumny;
vector<float> domyslnyWiersz(kolumny, wartosc);
m.tab = vector< vector<float> >(wiersze, domyslnyWiersz);
}
return strumien;
}
Ale i tak moim zdaniem sama funkcjonalność tego operatora jest zła.
Ja bym oczekiwał od takiego operatora wczytania dowolnej macierzy gdzie wartości macierzy są podawane.
O wiele bardziej logicznie jest zdefiniować jakąś funkcję, która zapewni tą funkcjonalność. Ja bym nawet nie robił tego w oparciu o strumienie. Tylo coś w tym stylu:
void Matrix::RestetTo(int rowCount, int columnCount, float defaultValue)