Dzisiaj ode mnie kolejna wskazówka w temacie C++.

Jak wszyscy wiemy, jedną z głownych zalet języka C++ jest wydajność oraz możliwość różnorakich optymalizacji. Jedną z takich optymalizacji jest optymalizacja pamięci. Optymalizować można zarówno zużycie pamięci na stercie (heap) jak i stosie (stack).

Jedną z najskuteczniejszych technik jest tzw. memory recycling. Zasada jest prosta: jeśli mamy jedną zmienną której już nie potrzebujemy, a chcemy zaalokować kolejny obiekt, to możemy ten nowy obiekt
Passer93 - Dzisiaj ode mnie kolejna wskazówka w temacie C++.

Jak wszyscy wiemy, je...

źródło: comment_16494196333Kvjw95Cr7QIeznYau54XK.jpg

Pobierz
Jako że język C++ jest dość złożony to postanowiłem dzielić się różnymi wskazówkami i technikami których sami używamy w naszym zespole. Będe to wrzucał pod tagiem #zloteradypassera

Dzisiaj polecam wam nowości z C++19 czyli tzw "priority function calls". Polega to na wzięciu nazwy funkcji w nawiasy i umieszczeniu przed nią odpowiedniej ilości gwiazdek *. Powinno się to robić przy wywołaniach które mają duże znaczenie dla kodu.

Ma to kilka zalet, po
Passer93 - Jako że język C++ jest dość złożony to postanowiłem dzielić się różnymi ws...

źródło: comment_1646730842FU2MK6vLVNDE7uMqJBgRuS.jpg

Pobierz
Siema mirki. Myślę, żeby się przebranżowić za rok, dwa na programiste #cplusplus
Mam z tym językiem do czynienia od dawna, dłubałem przy sfml, troche przy jakichś SPOJ itp.
W QT robiłem aplikacje, ogólnie sporo tutorialandu zaliczyłem ale ciągle brakuje mi tego skupienia na jednej rzeczy i jakiegoś celu. Czy nakierował by mnie ktoś z Was na to z jakimi problemami mają do czynienia programiści robiący na "etacie".
Domyślam się, że rzadko jedna
@ImperiumCienia: to zależy od firmy.

Są firmy które klepią stary kod jeden projekt lub za przeproszeniem uzdatnianie gówna, czy inne przenoszenie ze starego na pseudonowe.
Inne firmy, często startupy, preferują pracę na najnowszym "bleeding edge", pisząc wszystko w taki sposób by wykorzystać każdą nową funkcję języka, choćby samo to co w ostateczności robią nie miało sensu.
Trzeci rodzaj to typowe kontraktornie, co rusz zmieniające projekt i tym samym będące miksem pierwszych
@BeginEnd: Taka składnia lepiej współgra z inferencją typów, bo często typ można całkowicie pominąć. Poza tym uważam ją za czytelniejszą, ale to tylko moja opinia.

Podobną składnię ma m.in. Kotlin, Swift, TypeScript, Python, więc nie jest to jakiś wymysł Rusta. Już w Pascalu typ zmiennej lądował po jej nazwie.
piszę sobie prostą gierkę typu kółko i krzyżyk w c++ (w konsoli windows) i zrobiłem sobie menu pomocy możliwe do wywołania zarówno z menu głównego jak i z gry. to menu będzie można wywołać w każdym miejscu gry. i teraz pytanie mam takie, jak zrobić, żeby po wyjściu z tego menu powrócić do tego momentu gry, w którym się je wywołało?
#programowanie #pytanie #cpp #cplusplus
@yungdupa: a dobra, o to chodzi.
w takim razie:
można tak jak napisałeś, ale zaleca się przekazywanie stringa przez referencję (żeby nie był kopiowany przy wywołaniu funkcji). Jeśli natomiast chodzi o zwracanie, to prawdopodobnie chcesz zwracać po prostu string, a nie referencję do niego (co też można robić, ale musisz uważać, żeby nie wyjść ze scope, czyli np. możesz zwracać referencję do statycznego obiektu)

czyli użyłbym string foo(string &arg)
@yungdupa: To zalezy bardziej od konkretnej funkcji i tego jak chcesz obslugiwac lifetimy, nie ma jednego sposobu na przkazywanje stringow.
I jako że mamy 2021 to raczej std::string_view niż refka do stringa
Integrował ktoś z was boost::asio i zmq?
Wiem, że jest azmq, nie testowałem jeszcze, pewnie sprawdzę jak to działa, natomiast wstępnie z ciekawości napisałem sobie kod, gdzie z socketa zmq wyciągnąłem file descriptor i wrzuciłem go do streamdescriptora z boosta. Następnie na streamdescriptorze wywoałem sobie metody asyncwait dla parametrów waitread, oraz waiterror, a w handlerach (np. dla waitread) wołałem np. zmq_socket.receive i niby to zadziałało, natomiast
pytania mam do osób, które siedzą w c++ nieco dłużej niż ja (miesiąc temu zacząłem naukę) I byłyby mi w stanie nieco przystępnie mi wytłumaczyć parę rzeczy.

1. funkcje zwracające void - w każdym kursie, lekcji, wykładzie, etc. jest napisane, że ta funkcja nic nie zwraca. pytanie - po co w takim razie w ogóle je stosować, czy funkcje czasami nie pisze się po to, by zwracały nam coś, jakąś wartość czy
@yungdupa:

1 - mogą modyfikować stan jakiegoś obiektu. Czy to dobra praktyka? Jeden rabin powie tak, inny nie

3 - jak sama nazwa mówi, to struktura danych ;)

A na 2 wydaje mi się że znam odpowiedz, ale niech Ci odpowie ktoś kto siedzi w C/C++
@yungdupa:
1. Nie zawsze potrzebujesz, żeby funkcja zwracała wartość. Na przykład chcesz sobie napisać funkcję, która wypisuje jakieś dane na konsolę/do pliku. Oczywiście trochę słaby przykład, bo na przykład chciałbyś wiedzieć, czy wypisywanie się powiodło, albo ile znaków funkcja wypisała, i wówczas może zwracać wartość, np. liczbę wypisanych znaków. Ale jeśli wiesz, że i tak nie będziesz korzystać ze zwracanej wartości, to równie dobrze można to pominąć.
jeśli przy wywołaniu funkcji
Mirki, w C++ chciałbym powiązać inta ze stringiem, mam ID kategorii i wartość.
Zależy mi aby do każdego elementu mieć dostęp po jego indeksie, stąd myślałem o tablicy dwuwymiarowej ale nie wiem jak się za to zabrać.
Próbowałem zastosować wektor par ale to chyba nie do końca jest to czego szukam.
W miarę rozrysowałem o co mi chodzi na obrazku.
#programowanie #cplusplus #cpp
kolczan_prawilnosci - Mirki, w C++ chciałbym powiązać inta ze stringiem, mam ID kateg...

źródło: comment_16360662412AMZ3gcUUX4N5pEBroPDhU.jpg

Pobierz
Siema, pomógłby ktoś z tym zadankiem z programowania (c++)?

Napisz program, który wczytuje N liczb z klawiatury oraz:
a. Wypisuje na ekran x-razy liczbę 0, gdzie x = średnia wprowadzonych liczb

siedzę już nad nim sporo i nie mogę nic konkretnego wymyśleć|| mam jedynie taki fragment kodu:

#include
using namespace std;

int main()
{
int n;
cout << "Ile liczb chcesz wpisac? :" << endl;
cin
jak cpp to użyj srd::array. potem for-ranged loop i dodajesz w każdym kroku do sumy. sume dzielisz na n i kolejny for loop z wypisaniem zer.