Wpis z mikrobloga

@htfhere: 1. Kiedy używać wskaźników, a kiedy referencji? Uzasadnić.
2. Kiedy używać map, kiedy list, kiedy setów, kiedy wektorów.
3. Co to są predykaty? Jak się ich używa? Mogą nie znać nazwy, bo to nieistotne, ale po nakierowaniu o co chodzi powinni już opowiedzieć co to i po co.
4. Ogólnie o szablonach.
@htfhere: pytania o ogólną budowę biblioteki standardowej przez przykłady, czyli powiedzmy:

- masz vector stringow, usun wszystkie elementy czaczynajace sie od czegos
- w stringu zamien male litery na duze
- wylosuj n liczb i wstaw do kontenera
- posortować coś z wieloma kryteriami sortowania, żeby trzeba było własną porównywarkę napisać, albo stablesorta użyć

- jakieś jedno dłuższe zadanie algorytmiczne, czyli np. napisać upper
bound od zera
@notauser: jak coś to ja jestem tym studencikiem który będzie wypytywany :) a jak sądzisz jakiego typu mogą być pytania? Może coś z obiektowością? w stylu co to są klasy abstrakcyjne albo do czego służy polimorfizm?
@htfhere: Ja pytałbym o: klasy, wskaźniki, heap vs stack, do czego służy virtual, jakieś praktyczne zadania z forami i ifami, jakieś wykorzystanie gotowego kontynera. Dużo zależy od tego co taki student ma robić, w C++ kruczków na rozmowę kwalifikacyjną nie brakuję. Polecam lekturę Effective C++.
@htfhere: Tutaj są 2 problemy do rozważenia:

Problem 1:
Referencji używamy wtedy, gdy chcemy mieć pewność, że wartość jest zawsze dostępna, nie musimy się martwić o sprawdzanie, czy nie jest nullem. Parametry funkcji narzucają, że zmienna musi coś zawierać i przy wywoływaniu tej funkcji programista jest zmuszony dostarczyć tą wartość.

Wskaźnika użyjemy wtedy, kiedy chcemy mieć dodatkowy stan, czyli null. To jest przydatne, jeśli wiemy, że dana wartość nie zawsze jest
@vipe: Uch, żałuję że dopiero teraz to zobaczyłem.
Wskaźniki powinny być traktowane jako dodatek do C++. Nie ma takiej sytuacji, w której nie dałoby się obyć bez nich, jedynie za wyjątkiem grzebania ręcznie po pamięci. Wszelkie operacje na wskaźnikach powinny być enkapsulowane w klasach, tak, żeby żaden wskaźnik nie wyszedł na zewnątrz.
Ad Problem 1: "Trzeci stan" wiąże się z innym poważnym problemem który wnoszą wskaźniki - odpowiedzialność za przydzieloną pamięć.
@htfhere: Hmm, poza polską wiki niespecjalnie. W skrócie:
1. Klasy trzymaj na stosie, nie na stercie (czyli pod wskaźnikiem).
2. Jeśli masz jakiś zasób (np pamięć zaalokowaną na stercie właśnie) trzymaj uchwyt do tego zasobu (tutaj: wskaźnik) w obiekcie przechowywanym na stosie.
3. W destruktorze tego obiektu, zwalniaj zasób.
Co to powoduje? Że użytkownik Twojej klasy nie musi zarządzać ręcznie zasobem, co jest generalnie złe i błędogenne. Dodatkowo, powoduje, że kod