-
Data: 2009-07-27 10:44:42
Temat: Re: Opowiadanie o GC
Od: Krzysiek Kowaliczek <k...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Michal Kleczek wrote:
> Krzysiek Kowaliczek wrote:
>
> [ciach]
>> Powiedzmy, że jest to globalny obiekt z dwoma
>> funkcjami statycznymi getId, releaseId za którymi
>> kryje się mapa :).
>>
>
> Prosze...
> Wezmy scenariusz:
> 1. mamy sobie mape long->Item
> 2. przychodzi komunikat
> 3. parsujemy komunikat i odczytujemy id obiektu ktorego dotyczy
> 4. musimy w mapie znalezc obiekt odpowiadajacy temu id
> 5. jezeli program nie trzyma (poza mapa) referencji do danego obiektu -
> musimy usunac mapowanie z mapy
>
Z dokładnością do tego, że należałoby przenieść
definicje metod do .cpp, aby uniknąć cyklicznych zależności.
struct mapa
{
static void setId ( Item& item )
{
int id = findFreeId ();
map_.insert ( std::make_pair ( id, &item ) );
}
static void releaseId ( Item& item )
{
map_.erase ( item.id_ );
}
static Item* findItem ( int id )
{
std::map<int, Item*>::iterator it =
map_.find ( id );
if ( it != map_.end () )
return it-> second;
else
return 0;
}
private:
static std::map<int, Item*> map_;
}
struct Item
{
~Item ()
{
mapa::releaseId ( *this );
}
Item ()
{
mapa::setId ( *this );
}
int id_;
};
I teraz niezależnie czy tworzymy obiekty na stosie
czy alokujemy dynamicznie ( pod warunkiem, że go zwolnimy ),
zawsze zadziała.
Pozdrawiam
KK
Następne wpisy z tego wątku
- 27.07.09 10:54 Michal Kleczek
- 27.07.09 11:19 Krzysiek Kowaliczek
- 27.07.09 11:22 Michal Kleczek
- 27.07.09 11:29 Krzysiek Kowaliczek
- 27.07.09 11:30 Maciej Sobczak
- 27.07.09 11:32 Michal Kleczek
- 27.07.09 11:37 Maciej Sobczak
- 27.07.09 11:40 Krzysiek Kowaliczek
- 27.07.09 11:40 Michal Kleczek
- 27.07.09 11:41 Maciej Sobczak
- 27.07.09 11:44 Maciej Sobczak
- 27.07.09 11:45 Michal Kleczek
- 27.07.09 11:51 Maciej Sobczak
- 27.07.09 11:58 Maciej Sobczak
- 27.07.09 11:59 Krzysiek Kowaliczek
Najnowsze wątki z tej grupy
- Xiaomi [Chiny - przyp. JMJ] produkuje w całkowitych ciemnościach i bez ludzi
- Prezydent SZAP/USONA Trump ułaskawił prezydenta Hondurasu Hernandeza skazanego na 45 lat więzienia
- Rosjanie chwalą się prototypem komputera kwantowego. "Najważniejszy projekt naukowy Rosji"
- A Szwajcarzy kombinują tak: FinalSpark grows human neurons from stem cells and connects them to electrode arrays
- Re: Najgorszy język programowania
- NOWY: 2025-09-29 Alg., Strukt. Danych i Tech. Prog. - komentarz.pdf
- Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- Błąd w Sofcie Powodem Wymiany 3 Duńskich Fregat Typu Iver Huitfeldt
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
Najnowsze wątki
- 2026-01-29 KSeF - 13 wątpliwości
- 2026-01-29 A ja się pochwalę
- 2026-01-29 Warszawa => Mid/Senior IT Recruiter <=
- 2026-01-29 Warszawa => Senior Java Developer <=
- 2026-01-29 Warszawa => IT Recruiter <=
- 2026-01-28 Degradacja
- 2026-01-28 Wysoki Sąd poinstruował czego unikać wyzywając Owsiaka "Równiejszego"
- 2026-01-28 Białystok => Solution Architect (Workday) - Legal Systems <=
- 2026-01-28 Białystok => Preseles Inżynier (background baz danych) <=
- 2026-01-28 Wrocław => Konsultant wdrożeniowy ERP <=
- 2026-01-28 Łódź => Microsoft Engineer <=
- 2026-01-28 Białystok => Tester manualny <=
- 2026-01-27 Tradycja ciągania posłów po sądach za wystąpienia w Sejmie będzie kontynuowana [Lepper 2]
- 2026-01-27 Pierwszy raz sprzedano więcej samochodów zeeletryfikowanych niż ice
- 2026-01-27 Elektryczny Kałasznikow




Jak kupić pierwsze mieszkanie? Eksperci podpowiadają