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

usuwanie elementów w std::vector

Ostatnio zmodyfikowano 2024-02-10 23:18
Autor Wiadomość
tBane
Temat założony przez niniejszego użytkownika
» 2024-02-10 14:11:40

1. Posiadać zbiór elementów unit*
2. Dodawać do zbioru elementy unit* - podając unit* jako argument
3. Usuwać ze zbioru elementy unit* - podając unit* jako argument
4. Listować elementy unit* w wygoodny sposób
P-180707
pekfos
» 2024-02-10 14:46:07
Niezbyt to konkretne.
  • "Zbiór" zwykle znaczy że elementy są unikalne, więc pytanie czy miałeś taką intencję i czy kontener ma to robić automatycznie. Jeśli tak i tak, to w C++ jest kontener std::set<> który to realizuje. Listowanie elementów będzie pewnie zbliżone wydajnościowo do listy bo to trawersowanie drzewa.
  • Czy masz jakieś wymagania na kolejność?
  • Ile razy się wykonuje każda z tych operacji w jednym cyklu działania programu?
  • Czy dopuszczalne jest modyfikowanie wskazywanych obiektów na potrzeby ewentualnych optymalizacji (np mark and sweep). Może nie być dopuszczalne gdy masz wiele widoków na te same obiekty
P-180709
tBane
Temat założony przez niniejszego użytkownika
» 2024-02-10 14:49:37
elementy mogą się powtarzać, gdyż sam napiszę logikę przetwarzania (dodawania, odejmowania elementów). Kolejność nie istotna choć przyda się możliwość sortowania tego zbioru.
P-180710
DejaVu
» 2024-02-10 19:43:49
Równie dobrze możesz sobie zrobić:
C/C++
std::set < unit * > units;

Wówczas możesz dodawać/usuwać jednostki w łatwy sposób i również możesz iterować po całym kontenerze. Keep it simple.
P-180720
tBane
Temat założony przez niniejszego użytkownika
» 2024-02-10 23:10:20
Dzięki DejaVu oraz pekfos !!!


C/C++
#include <set>

std::set < Villager * > villagers;
villagers.clear();
Villager * zefir = new Villager( "Zefir" );
villagers.insert( zefir );
villagers.erase( zefir );
P-180727
1 « 2 »
Poprzednia strona Strona 2 z 2