Mam napisac program ktory tworzy tablice rzadka dowolnego wymiaru,
mam problem z taka operacja:
[code]
int main(){
// tworzymy 3-wymiarowa tablice liczb int
SparseArray<int,3> tablica;
// tworzymy obiekt indeksu
SparseArray<int,3>::Index i;
// obiekt ’i’ bedzie indeksowac element tablica[1][2][7]
i[0] = 1;
i[1] = 2;
i[2] = 7;
// modyfikujemy element tablicy o indeksie ’i’
tablica[i] = 124; //i tu jest problem!!!!!!
}
[/code]
a tak wyglada cala klasa (dokladnie jej szablon):
[code]
template< class V, unsigned D >
class SparseArray
{
public:
map< Index, V > zbiorIndexow;
class Index
{
public:
long * tab; // to jest tablica o dowlonej liczbie elementow
... //tu konstruuje element Index
};
class reference
{
public:
Index index;
map< Index, V > * tablica;
reference( const Index & ind, map< Index, V > * mapa )
{
this->index = ind;
this->tablica = mapa; //to wskazuje na mapa, a mapa na zbiorIndexow
}
reference & operator = ( V v )
{
if( v != V() ) //to sprawdza czy el nie jest zerowy
(*tablica)[ index ] = v; //i tu jest problem!!!!!!!!!!!!!!!!!!!!!!
return *this;
}
};
reference operator[]( const Index & ind )
{
return reference( ind, &( this->zbiorIndexow ) );
}
...
};
[/code]
Zamiast przypisać do zadanego klucza w mapie zadany element wyskakuje mi taki błąd:
[code]
c:\program files (x86)\codeblocks\mingw\bin..\lib\gcc\mingw32\4.4.1\include\c++\bits\stl_function.h|230|error: no match for 'operator<' in '__x < __y'|
[/code]
Męczę się już od kilku godzin i nie mam pojęcia jak to dobrze zrobić :(