Cześć!
Temat z serii, co z tym C++ nie tak :)
Ostatnio mam chwilę czasu i bez takiego życiowego pośpichu, analizuję sobie biblioteki dostarczane w różnych jezykach programowania.
W jednym jest coś fajnego, a w drugim co innego jest fajnego i tak sobię kontempluję nad każdą pierdołą.
1. Nic Ci nie dam
Osoba, która zna asemblera, może się troszke zdziwić, że pop np. w std::vector
nic nie zwraca... Dlaczego?
Logiczne jest, że jeżeli push coś wrzuca na koniec, to pop powinien to coś ściągnąć z tego końca.
Dość długo programowałem w asm i pop
nic nie zwracający to jak dom bez drzwi i okien.
Taki odpowiednik asemblerowego pop'a pojawił się np. w QList
jako takeLast
, a w QVector
nie ma.
**2. Poprawnie nazwę, ale nie dokończę **
Z tym wrzucaniem i ściąganiem - to taki stos... ale dlaczego są metody push_back
, pop_back
a nie ma push_front
, pop_front
?
Komuś się chciało dopisać _back
a analogicznego _front
już nie?
W Qt w wektorach pop_front
, push_front
zostały dodane.
Powracając na chwilkę do pkt1, metody pop w Qt nic nie zwracają.
Zostało tak ze względu na wektory z C++?
Nie można było dopisać drugiego np. pop_front
'a żeby zwracał element?
Uważam, że wektorom w C++ (a także w Qt) dużo jeszcze brakuje i tam gdzie potrzebne są dość logiczne operacje na wektorach to w std są nie zaimplementowane.
Przykładem może być projekt Octav'y, gdyby na wektorach dało się użyć operatorów arytmetycznych byłoby super - czemu nie?
Jeśli obiekty w wektorze mają operatory arytmetyczne, to czemu wektor by nie mógł przyjąć takiej operacji dla wszystkich jego elementów:
std::vector<int> vect(6, 6);
vect /= 2;