Kłopot z przypisaniem wartości do zmiennej typu <map>

0

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ć :(

0

Kolega elektryk, elektronik, energetyk? Macierze rzadkie itd. itp. Dobra ale wracajmy do tematu. Na podstawie tego co kolega wkleił to takie coś jak cytuję:
[code]

template< class V, unsigned D >
class SparseArray
{
public:
map< Index, V > zbiorIndexow;

class Index
{

[/code]
to chyba nie pójdzie bo skąd map< Index ... ma wiedzieć co to jest Index? Chyba, że kolega wkleił nie wszystko?
Proszę wkleić cały kod testowy, który przy kompilacji się wywala to może to coś da?

0

Zapewne klasa Index nie ma zdefiniowanego operatora <, a mieć musi - mapa jest posortowana po kluczach.

0

KiedysToByloFajnie, masz racje nie pojdzie staralem sie wkleic tylko potrzebny w tej sytuacji fragment kodu i nierozwanie skopiowalem map< Index, V > zbiorIndexow; przed indexem (normalnie mam normalnie :)

byku_guzio dzieki wielkie o to wlasnie chodzilo, poszlo bez problemow po przeladowaniu operatora :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1