Aktywne Wpisy

Ehh. Chłop się boi że umrze na zawał. Wszystko przez Nerwice. Ehh. Pytałem się mamy a mama powiedziała że nie ma opcji abym z nią spał. Ehh its over dla chłopa. Chłop 22 lata a się boi samemu spać bo umrze we śnie. Śmiechu warte. Koń by się uśmiał.
Śpisz Sam=Oski
Śpisz z mamą= Chłop
#przegryw ##!$%@? #nerwica #nerwicalekowa
Śpisz Sam=Oski
Śpisz z mamą= Chłop
#przegryw ##!$%@? #nerwica #nerwicalekowa
źródło: 666ce1ba60c5cf219ffc950d8f1c8eb4
Pobierz
frugASS +22
. >:((((((
źródło: GOymC5kbsAEOHJF
Pobierz




void funkcja(std::string str){
std::string s = std::move(str);
}
zamiast
void funkcja(const std::string& str){
std::string s = str;
}
i analogicznie w konstruktorze?
Konstruktor(std::string str) : s(std::move(str){}Mam wrażenie, że nikt tak nie robi, a nie widzę wad tego podejścia.
#cpp
std::string:
Dostaje l-value to masz copy+move.
Dostajesz r-value to masz constructor+move.
A wersji z const std::string&
Dostaje l-value to masz referencja+kopia.
Dostajesz r-value to masz constructor+kopia(!!!).
Wersja z overloadami
Dostaje l-value to masz referencja+kopia.
Dostajesz r-value to masz constructor+move.
const &zamiast kopiowania, ale to jest raczej zalecenie. Jeżeli funkcja ma wziąć wartość parametru na własność w jakiś sposób (np zmienia jego wartość) to kopia może być ok. Przekazywanie przez kopię ogranicza pole manewru użytkownikowi funkcji - cokolwiek nie zrobi i tak finalnie będzie stworzona kopia przy wywołaniu.Jak funkcja
Wydajność?
No to czemu nie piszesz w pythonie? Wtedy będzie mniej znaków.
@Gerax9: optymalizuję kod jeżeli jest to potrzebne. Wyleczyłem się z optymalizacji każdej linijki kodu. BTW: nie wiem czy wiesz ale przy krótkich stringach (do 22 znaków) oba podejścia są równoważne.
@Gerax9: Bo kodzę w C++.
Ale to nie jest jakaś specjalnie trudna optymalizacja, tylko po prostu zasada pisania kodu.
Właściwie to 15 znaków + '\0', a przynajmniej tak jest na systemach 64 bitowych, bo wtedy zamiast dwóch wskaźników masz te 16 bajtów.
@Gerax9: + capacity = 3 słowa.
const char*stworzysz temporary stringa, którego będziesz kopiował, w podejściu z wartością zmovujesz ten, który powstał przy konwersji.teoretycznie fajnie by było mieć obie sygnatury. w praktyce idzie się skichać przy 2^n overloadach dla n parametrów.
po to powstał perfect forwarding, żeby miec jeden generyczny overload, ale wtedy witajcie szablony i ich mankamenty.
@MamCieNaHita No tak czyli value + move jest lepsze, bo też nie ma dodatkowej kopii przy r-value/const char*.
@Gerax9: Nie mogę bo nie sprawdzałem dokładnie jaki to rozmiar. Ale masz rację, w plikach nagłówkowych jest zahardkodowane 15 znaków + '\0' .