Hirdetés
- Akciófigyelő: Megnyílt a Xiaomi hivatalos magyar webáruháza
- iPhone topik
- Dobja a SIM foglalatot az iPhone Európában?
- Vivo X200 Pro - a kétszázát!
- Kétmotoros tereproller, ami nem lett túl drága - Ausom L2 Max Dual
- Android alkalmazások - szoftver kibeszélő topik
- Poco F7
- Telekom mobilszolgáltatások
- Samsung Galaxy S23 Ultra - non plus ultra
- Hivatalosnak tűnő képeken a Galaxy S25 FE
-
Mobilarena
Új hozzászólás Aktív témák
-
Jester01
veterán
Ez a kód olyan mintha a haverom írta volna
Ész nélkül kihasználja a nyelvben lévõ lehetõségeket, de feláldozza az olvashatóságot és karbantarthatóságot. Kiváló példája annak, hogyan ne használjuk a template-eket, hacsak nem vagyunk zsenik.
Mindenesetre a dolog kb. a következõképpen mûködik:
Vektorokkal végez mûveleteket, ez gondolom nyilvánvaló. A Vector<T, N> N darab T típusú elemet tartalmaz. A VectorSum osztály az összeadás mûveletet reprezentálja.
Az elsõ összeadás operátor azt írja le, hogy két azonos elemtípusú és méretû vektor összeadható, és az eredménye ugyancsak ilyen tulajdonságú vektor lesz.
A második összeadás operátor azt mondja, hogy egy vektorösszeghez jobbról még hozzá lehet adni egy másik vektort is.
Az init és print függvények gondolom világosak.
A megvalósítandó mûveletek:
vektor + vektorösszeg: a vektorösszeg + vektor mûvelet párja, a jobb és bal oldal felcserélésével.
vektorösszeg + vektorösszeg: mint az elõzõ, csak most mindkét oldal vektorösszeg
számmal szorzás jobbról és balról: be kell vezetni egy új alapmûveletet a VectorSum mintájára, pl. így:
template<class T, long N, class V>
class ScaledVector
{
long factor;
const V &vector;
public:
ScaledVector(long f, const V &v) : factor(f), vector(v) {}
T operator[](long i) const {
return factor * vector[ i ];
}
};
Igényesebb kollegák a faktor típusát beadhatják template paraméternek, akkor majd pl. double típussal is lehet szorozni.
A Vector osztályba fel kell venni egy újabb overloadot az = operátorra, hogy ilyen ScaledVector osztályt is tudjon fogadni (ugyanúgy sima elemmásolás van benne).
Ezután már csak a szorzás operátorra kell egy overload, pl. így:
template<class T, long N>
inline ScaledVector<T,N,Vector<T,N> >
operator*(int f, const Vector<T,N> &v) {
return ScaledVector<T,N,Vector<T,N> >(f,v);
}
Illetve hasonlóképpen jobbról való szorzáshoz is.
És mivel ilyen ScaledVector objektumokat még össze is akarunk adni, hát ahhoz rá kell engedni a VectorSum-ot két ScaledVector-ra, imígyen:
template<class T, long N, class Left, class Right>
inline VectorSum<T,N,ScaledVector<T,N,Left>,ScaledVector<T,N,Right> >
operator+(const ScaledVector<T,N,Left> &l, const ScaledVector<T,N,Right> &r) {
return VectorSum<T,N,ScaledVector<T,N,Left>,ScaledVector<T,N,Right> >(l,r);
}
Egyszerû, nem igaz?
[Szerkesztve]
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- Gamer Notebook! Csere-Beszámítás! Asus Rog Strix G713QE! R7 5800H / RTX 3050Ti / 32GB DDR4 / 512 SSD
- LG 34GP950G-B - 34", Nano IPS, 3440x1440, 180Hz, G-SYNC, 1ms, HDR600 - Gari 2026.07.04. -ig -
- Apple iPhone 15 Pro 128GB Fehér Titán Színben 100% Gyári Akkuval 6 Hónap Jótállással
- Corsair HXi Series HX1500i 1500W 80 PLUS Platinum Tápegység INGYEN FOXPOST
- iPhone XR 64GB Független/1 hónap gar./Akku 80%/p4442
- LG 38WN95C - 38" Ívelt NANO IPS - 3840x1600 - 144hz 1ms - Nvidia G-Sync - AMD FreeSync - ThunderBolt
- Szép állapotban levő Apple iPhone 12 Pro Max 128GB / 12 hó jótállás
- Apple iPhone 14 128GB, Kártyafüggetlen, 1 Év Garanciával
- Honor X8 128GB, Kártyafüggetlen, 1 Év Garanciával
- Lenovo ThinkPad X270 (16) - i5-7300U, 16GB, 512GB SSD, 12" FULL HD (ELKELT)
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest