Czy jest tu jakiś specjalista od #assembler, a dokładniej od assemblera dla architektury 64 bitowej ?
Bardzo podoba mi się rozwiązanie tzw. thunka procedury WndProc, zaprezentowanego w tym artykule. Jak dla mnie jest świetne i często z niego korzystałem. Podoba mi się też to upakowanie w szablonie #cpp, w przeciwieństwie do innych, podobnych rozwiązań. Niestety, czasy się zmieniają i królują już głównie desktopy 64-bitowe a
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@sheeple:
Po pierwsze stdcall na dzisiejszych superskalarnych architekturach to jakiś smutny żart.
Zapis pod jakiś niezalginowany wskaźnik może być wolniejsze niż skopiowanie wszystkich potrzebnych rejestrów do wykonania zwykłego calla, dzisiaj wszystko trzeba optymalizować pod korzystanie z cach line, a nie rejestrów.
Wykonywanie jakiegoś losowego kodu to teraz dodatkowo bawienie się z wyłączaniem protekcji pamięci.
Jedyna rada to taka, że dzisiaj już nie grzebiemy w ABI, bo to zbyt skomplikowana sprawa.
  • Odpowiedz
#pytanie #programowanie #cpp

wchar_t *pwString = new wchar_t[N];
I teraz to N jest liczbą znaków, czy bajtów?
Mam wątpliwości bo operator new alokuje pamięć, a chcąc wyzerować pamięć przez memset posługujemy się bajtami:

memset(m_pwString, 0, N * sizeof(wchar_t));
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@sheeple: operator new dla tablicy zaalokuje N wchat_t elementów, czyli najpewniej N*2 (wide chary pewnie po 2 bajty)

memset to C API - tam lubią bawić się surowymi bajtami, i musisz podawać liczbę bajtów (analogicznie pointer zwrócony przez malloc musiałbyś scastować z surowych bajtów na cokolwiek konretnego)
  • Odpowiedz
@sheeple: Ale tak naprawdę lepiej korzystać z std::vector, a jeżeli już koniecznie z new to chociaż z inteligentych wskaźników std::unique_ptr czy std::shared_ptr.
  • Odpowiedz
czym w działaniu różnią się te dwa kody?

void ZmienWartosc(std::string*arg)
{
*arg = "zmieniona wartosc";
}
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Witam wykopki, otóż sprawa jest taka, że chciałbym się znowu nauczyć (czy tam przypomnieć) programowania, a dokładnie języka #cpp lub ewentualnie #javascript. Jaka jest najlepsza opcja do #naukaprogramowania aktualnie? Wcześniej uczyłem się z kursów potężnego mirosława zelenta (XD) ale podobno te jego kursy nie są najlepsze. Są jakieś książki/kursy czy cokolwiek dla takiej osoby początkującej jak ja? Dzieki

#programowanie #informatyka
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Angielski umiem, ale jednak wolałbym się uczyć z polskiego źródła ;)


@nerfipro174: Czyli nie umiesz go na tyle komfortowo żeby w nim się czegoś uczyć. Polskie materiały są prawie zawsze przynajmniej o klasę albo więcej gorsze niż materiały angielskie.
  • Odpowiedz
#programowanie #cpp

Dramat w czterech aktach:

1. @Khaine mamy tutaj jakieś zgłoszenie nierozwiązane sprzed 2 lat, weź się przyjrzyj czy to już czasem nie działa xD
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@MamCieNaHita: Jak masz commity z 2005 roku w C++ to myślę, że jesteś w stanie sobie dalej wyobrazić jakimi narzędziami jest to ulepione i co tam w środku da się znaleźć xD I to nie są nawet takie bardzo stare fragmenty kodu. Najstarsze są z okolic 1999 chyba.

To był czas kiedy z tego co słyszałem nie korzystali nawet z systemu kontroli wersji tylko n----------i komentarze w pliku notatnikowym z opisem
  • Odpowiedz
@bartekplus: Masz rację. Jakoś umysłowo ograniczyłem się tylko do kodu z książek o programowaniu o których wspomina autor gdzie większość przykładów to po prostu jakiś main z kodem pokazującym podstawowe instrukcje języka
  • Odpowiedz
@Khaine: w tym samym TU to chyba jest ok, ale głowy nie dam. Bardziej mnie dziwi, że version jest tablicą 3 wskaźników/stringów, a bezpośrednio porównujesz tablicę z czymś, co może być jej elementem.
  • Odpowiedz
Treść przeznaczona dla osób powyżej 18 roku życia...
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Danieru: Unordered map/map/unordered set/set mają unikalne klucze. Ale niezbyt ten kod mi się podoba.

chociaż cofam, on nie chce usunąć powtarzających się n razy, tylko od n-tego powtórzenia. To jest całkiem spoko, ale jak chce być spryciarzem to może po prostu napisać if(++mp[*itr] > n), i będzie jeden hash+lookup+pesymistycznie milion przejść przez linked listę mniej.
  • Odpowiedz
@Danieru: Tworzona jest pusta. Ale operator [] dodaje element, jeśli go w mapie nie ma, z domyślną wartością. Domyślną wartością dla inta jest 0. więc mp[42], jeśli w mapie nie ma klucza 42, dodaje klucz 42 z wartością zero. Tutaj jest od razu inkrementowany - a więc inkrementowana jest albo poprzednia wartość (licznik) powtórzeń, albo 0, aby zapisać pierwsze.

To standardowy idiom na zliczanie znaków/intów/innych małych rzeczy
  • Odpowiedz