Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Mapy, listy i o co w tym wszystkim chodzi?

Ostatnio zmodyfikowano 2011-09-22 10:30
Autor Wiadomość
Aplauz
Temat założony przez niniejszego użytkownika
Mapy, listy i o co w tym wszystkim chodzi?
» 2011-09-22 09:50:32
Witam,
Ja Aplauz znany troll tego zacnego forum, pisząc mój nieepicki program natknąłem się na problem, którego własnymi siłami nie mogę rozwiązać. Doszedłem do wniosku, że skoro nie mogę zmienić zmiennej H_KEY na string, dobrym rozwiązaniem będzie użycie mapy. Jednak moja znajomość mapy jest nieco ograniczona, więc o czymś takim jak mapa zawierająca listę pojęcie mam raczej niewielkie. Mimo wszystko postanowiłem przećwiczyć owe zagadnienie i tu pojawił się owy problem.
C/C++
#include<iostream>
#include<list>
#include<map>
#include<string>

using namespace std;

map < list < string >, list < int >> mapka;
list < string > lista_string;
list < int > lista_int;


int main()
{
   
    lista_string.push_back( "Zenek" );
    lista_string.push_back( "Jurek" );
    lista_string.push_back( "Magda" );
    lista_string.push_back( "Jolka" );
   
    lista_int.push_back( 25 );
    lista_int.push_back( 20 );
    lista_int.push_back( 16 );
    lista_int.push_back( 23 );
   
    list < string >::iterator it_string;
    list < int >::iterator it_int;
   
    for( it_string = lista_string.begin(); it_string != lista_string.end(); it_string++ )
    for( it_int = lista_int.begin(); it_int != lista_int.end(); it_int++ )
    {
        mapka.insert( pair < list < string >, list < int >>( * it_string, * it_int ) );
    }
   
    for( map < list < string >, list < int >>::iterator it_map = mapka.begin(); it_map != mapka.end(); it_map++ )
    {
        cout << it_map->first << ", " << it_map->second << endl;
    }
   
    system( "pause" );
    return 0;
}
Z jakiegoś nieznanego mi powodu (co wynika zapewne z mojej niewiedzy) program w miejscu, w którym chce wyświetlić zawartość mojej mapki wywala mi błąd następującej treści:
1>c:\users\admin\documents\visual studio 2010\projects\zadanie 2\zadanie 2\statek.cpp(37): error C2679: binary '<<' : no operator found which takes a right-hand
Dlaczego tak się dzieje? Jak mogę to naprawić? I czy w ogóle ten program ma sens? Może są jakieś lepsze sposoby na zapełnienie mojej "mapki", niż używanie dwóch for-ów? Pomocy!
P-41265
DejaVu
» 2011-09-22 10:30:33
Nie rozumiesz po prostu kontenera map. Pierwszy parametr szablonu to tzw klucz mapy, a drugi to wartość. Kluczem może być łańcuch znaków, liczba, struktura bądź klasa, która posiada przeciążone odpowiednie operatory porównania. Na podstawie klucza można wyszukać wartość jaka znajduje się w kontenerze. Wartością może być np. cokolwiek.
P-41268
« 1 »
  Strona 1 z 1