Wpis z mikrobloga

@lionbest: a w czym używanie tablic z C Tobie przeszkadza? Żeby stworzyć vectory czy Arraye, trzeba umieć tablice z C. Zasada odwoływania się jest podonbna (nie taka sama) Zrozumienie jednych i drugich jest pożądana, aby zrozumieć "ale jak to działa" i nie dziwic się w przyszłości, dlaczego dane rozwiązanie będzie się lepiej albo gorzej skalowało.
  • Odpowiedz
@Kaczus2B: Że opanować podstawy programowania w nowoczesnym C++ nie trzeba umieć implementować biblioteki standardowej.
Cały problem z tablicami w C jest z decay typu do wskaźnika, nowoczesny C++ na tym dużo traci.
  • Odpowiedz
@lionbest: ale brak tej wiedzy ogranicza niestety przyszłego programistę. Jeśli ma pisać wydajny kod. Jeśli komus na wydajności nie zależy uzyje innych narzędzi a nie C++
  • Odpowiedz
@Kaczus2B: Ahahahah niedoświadczony programista piszący wydajny kod ręcznie implementując kontenery? No chyba coś ci się pomyliło. To już nie te czasy gdzie ręcznie jesteś wstanie zrobić więcej niż kompilator.
  • Odpowiedz
@lionbest: kto ci powiedział, że ma ręcznie implementować kontenery - ma wiedzieć, dlaczego maja takie a nie inne ograniczenia. Coś chyba powinienes wypić poranna kawę, bo coś słabo idzie dziś Tobie z czytaniem.
  • Odpowiedz
@Kaczus2B:

Żeby stworzyć vectory czy Arraye, trzeba umieć tablice z C

Naprawdę? Właśnie wydaje mi się właśnie że nie. Nie trzeba umieć arytmetyki wskaźników wystarczy wiedzieć co to jest ciągła przestrzeń i które kontenery ją posiadają, oraz dlaczego dostęp do przestrzeni pamięci która mieści się w lini cashu jest szybsza niż do takich które są w różnych częściach pamięci.
  • Odpowiedz
@lionbest: A dla mnie wydaje się, że osoba, która uważa kontenery za czary mary nie zdająca sobie z ich ograniczeń oraz przeznaczenia nie wpadnie na to, że zamiast kleić w std::styringu jakieś teksty, w pewnym momencie lepiej do tego uzyć std::stringstreama... Bo jest inaczej zbudowany, ma inne obostrzenia w standardzie, więc pewne rzeczy zostana zamienione na bliższy optymalnemu kod przez kompilator. Ale właśnie wtedy musimy wiedzieć jakie narzuty są wprowadzane
  • Odpowiedz
@Kaczus2B: Ok tutaj zgadzam się z tobą, ale to dalej nie tłumaczy wymagania znajomości programowania w C, chyba ze chcemy żeby ktoś sam do wszystkiego dochodził, zamiast się po prostu dowiedzieć o złożoności z dokumentacji.
  • Odpowiedz
@lionbest: drugi przykład - taki gość ma skorzystac z funkcji z biblioteki dll, ale nikt tego nie opakował jeszcze w kontenery c++, więc dostaje w wielu przypadkach struktury rodem z C, wiec znowu kasz np tablice. Więc dla mnie to jest jak "przedszkole" - takie podstawy, które ktoś kto programuje w języku tak uniwersalnym, wypadało by znał. Dlatego jak dla mnie nie jest kwestia, czy uczyć, co najwyżej jak długo
  • Odpowiedz
@lionbest: No i to nazywam właśnie pisaniem do szuflady, bo kiedy ostatni raz w życiu widziałeś na produkcji taki self-contained projekt, który nie musi się ani interfejsować z third-party depsem w C, gadać przez FFI, gadać z javą przez JNI (android), gadać z ObjC (iphone) itd. itp. Mrzonka.
  • Odpowiedz
std::styringu jakieś teksty, w pewnym momencie lepiej do tego uzyć std::stringstreama..


@Kaczus2B: a to dobre, stringstreamy szybsze. Żeby dostac wynikowego stringa z stringstreama musisz zrobić kopię, niestety tak jest zbudowany. Wpisująć w googlach "stringstream slow" dostaniesz masę wyników.
  • Odpowiedz
@Saly: napisalem zalezy do czego, jesli kleisz stringa to u mnie kod byl duzo szybszy. A wystarczy wiedziec jakie ograniczenia ma string, wlasnie to, e musi stale przechowywa tablice, wiec ida ralokacje co jakis czas przy dokladaniu. Jesli masz duzo malych kawalkow z ktorych kleisz takiego stringa w duzej petli stringstream bedzie duzo szybszy. Zreszta mozesz sobie poeksperymentowac, zachecam...
  • Odpowiedz