• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed funkcja remove_if w c++

Object Storage Arubacloud
0 głosów
804 wizyt
pytanie zadane 21 września 2017 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)
zamknięte 21 września 2017 przez Jakub 0

Hej, mam dzisiaj pytanie dotyczące działania funkcji remove_if. Natknąłem się na nią korzystając z takiego kursu do SFML: https://www.youtube.com/watch?v=r9ywFmV3rQk

Oto dokładne użycie w kodzie "tego czegoś" co mnie zastanawia :

auto iterator = remove_if(begin(blocks), end(blocks), [](Block &block) {return block.isDestroyed();});
blocks.erase(iterator, end(blocks)); //osowamy odpowiedni blok 

Ogólne rzecz biorąc szukałem na polskich i angielskich stronach informacji ale nic nie znalazłem co bym w pełni zrozumiał ,oczywiście nie chodzi mi żebyście mi wyjaśnili ten podany fragment kodu lecz ogólnie przeznaczenie i budowę tej funkcji . Z góry dziękuje za wszelką  pomoc i pozdrawiam .

komentarz zamknięcia: już znam wytłumaczenie

1 odpowiedź

+3 głosów
odpowiedź 21 września 2017 przez criss Mędrzec (172,590 p.)
wybrane 21 września 2017 przez Jakub 0
 
Najlepsza
Nazwa remove_if może być troche myląca, bo funkcja w rzeczywistości niczego nie usuwa, a jedynie przesuwa wszystkie elementy spełniająca podany warunek na koniec kontenera i zwraca iterator na pierwszy z tych elementów. Dzięki temu możesz następnie użyć metody erase w wersji "zakresowej" (tzn. podajesz iteratory będące początkiem i końcem zakresu elementów do usunięcia) podając jej jako początek zakresu iterator otrzymany z remove_if i jako koniec - koniec kontenera.
Wspomnianym warunkiem jest zwrócenie true przez funkcje/funktor przekazaną w ostatnim argumencie remove_if.
komentarz 21 września 2017 przez Jakub 0 Pasjonat (23,120 p.)
dzięks ,niby słyszałem coś takiego w  filmiku ale nie zwróciłem na to uwagi .

Jeszcze raz dziękuje i pozdrawiam, :)
1
komentarz 21 września 2017 przez j23 Mędrzec (194,920 p.)

(...) jedynie przesuwa wszystkie elementy spełniająca podany warunek na koniec kontenera

Inaczej: przesuwa wszystkie elementy, które nie spełniają warunku na początek kontenera, nadpisując, jeśli trzeba, elementy do usunięcia.

komentarz 21 września 2017 przez Jakub 0 Pasjonat (23,120 p.)
może i tak , ale jakie to ma znaczenie skoro efekt jest ten sam ;)
1
komentarz 21 września 2017 przez j23 Mędrzec (194,920 p.)
Znaczenie informacyjne.
komentarz 22 września 2017 przez criss Mędrzec (172,590 p.)
Dzięki za naprostowanie :)

Podobne pytania

0 głosów
0 odpowiedzi 258 wizyt
pytanie zadane 22 lutego 2019 w C i C++ przez lukaszint21 Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 450 wizyt
0 głosów
1 odpowiedź 907 wizyt
pytanie zadane 24 czerwca 2016 w C i C++ przez DeBos123 Nałogowiec (44,950 p.)

92,568 zapytań

141,422 odpowiedzi

319,637 komentarzy

61,956 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...