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

Problem z wektorami

Ostatnio zmodyfikowano 2012-06-30 14:40
Autor Wiadomość
palkoul
Temat założony przez niniejszego użytkownika
Problem z wektorami
» 2012-06-30 10:53:57
Witam.
Pisząc "ekwipunek" do gry, napotkał mnie błąd.
Powiedzmy, że mamy w wektorze 3 elementy. Chcę podnieść element z numerkiem 1, lecz nie mogę bo najpierw muszę podnieść najwyższy element wektora, czyli 2.
Rysowanie GUI:
C/C++
if( Przedmioty.size() > 0 && gr1.zwiad == false ) //Przedmioty to wektor, nie sprawdzam .empty(),
//ponieważ w zerowym elemencie wektora trzymam informacje o jego zawartości
{
    for( int pi = 1; pi < Przedmioty.size(); pi++ )
    {
        if( gr1.y == Przedmioty[ pi ].y && gr1.x == Przedmioty[ pi ].x && Przedmioty[ pi ].z == gr1.z )
        {
            attron( COLOR_PAIR( 1 ) );
            mvprintw( 19, 34, "PODNIES:" );
            mvprintw( 19, 43, "%s", Przedmioty[ pi ].name.c_str() );
            mvprintw( 19, 44 + Przedmioty[ pi ].name.length(), "%s", Przedmioty[ pi ].znak.c_str() );
            attroff( COLOR_PAIR( 1 ) );
            gr1.podp = true;
            gr1.podpi = pi;
        } else { gr1.podp = false; gr1.podpi = - 1; }
    }
}
Rysowanie na mapie:
C/C++
if( Przedmioty.size() > 0 )
{
    for( int pi = 1; pi < Przedmioty.size(); pi++ )
    {
        if( zwiad_y == Przedmioty[ pi ].y && zwiad_x == Przedmioty[ pi ].x && Przedmioty[ pi ].z == gr1.z )
        {
            attron( COLOR_PAIR( 1 ) );
            mvprintw( 9, 36, "%s", Przedmioty[ pi ].name.c_str() );
            mvprintw( 9, 34, "%s", Przedmioty[ pi ].znak.c_str() );
            attroff( COLOR_PAIR( 1 ) );
        }
    }
}
Usuwanie elementu:
C/C++
if( gr1.podp == true )
{
    Przedmioty.erase( Przedmioty.begin() + gr1.podpi );
}
Jak nie wiecie o co chodzi (nie umiem tłumaczyć) to zapodam demko.
Z góry dziękuje.
P-59381
DejaVu
» 2012-06-30 14:18:59
1. Zamiana elementów miejscami: » standard C++swap.
2. Vector raczej jest marnym kontenerem do wykonywania wszelkiego rodzaju przemieszczeń. Dodać na końcu: tak, usunąć z końca: tak, mieć dostęp do wszystkich elementów i je modyfikować: tak - w każdym innym przypadku: nie :)
P-59384
Drraven
» 2012-06-30 14:36:09
Zamiast wektora użyj mapy będziesz miał dostęp do każdego elementu w każdej chwili :D
P-59385
palkoul
Temat założony przez niniejszego użytkownika
» 2012-06-30 14:40:16
Okej, dzięki za info, zaraz coś wykombinuję z tymi mapami :)
P-59386
« 1 »
  Strona 1 z 1