Hirdetés
- gerner1
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- Meggyi001: Áram nélkül....méltóság nélkül.....
- Luck Dragon: Alza kuponok – aktuális kedvezmények, tippek és tapasztalatok (külön igényre)
- Luck Dragon: Asszociációs játék. :)
- MasterDeeJay: Intel Optane M10: mire lehet használni?
- sziku69: Fűzzük össze a szavakat :)
- Lalikiraly: Commodore The C64, Ultimate
- Luck Dragon: Óraátállítás
-
LOGOUT

Ú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!
- Témázgatunk, témázgatunk!? ... avagy mutasd az Android homescreened!
- Kertészet, mezőgazdaság topik
- Peugeot, Citroën topik
- exHWSW - Értünk mindenhez IS
- Harminc százalékos áremelésnél állhat meg az Intel
- Milyen billentyűzetet vegyek?
- Milyen TV-t vegyek?
- Formula-1
- gerner1
- Így néz ki és ekkor startol a Honor 600 Pro
- További aktív témák...
- JBL Bar 5.1 (Lecsatolható háttérsugárzós) Soundbar 510W, mélynyomóval
- Asus rog strix rtx 4080 oc
- Játékra vagy Munkára! Csere-Beszámítás! I7 3930K / Nvida GTX Titan B / 16GB DDR3 / 500GB SSD!
- Felsőkategóriás Gamer PC-Számítógép! Csere-Beszámítás! Z790 / I5 14600KF / 4070Ti Super / 32GB DDR5
- EVGA GeForce GTX 1080 Ti FTW3 HYBRID
- GYÖNYÖRŰ iPhone 11 Pro 64GB Silver -1 ÉV GARANCIA - Kártyafüggetlen, MS3565
- CÉGEK FIGYELEM!! iPhone 11 64GB Black -1 ÉV GARANCIA - 27% ÁFA-S SZÁMLA Kártyafüggetlen, 100% Akksi
- Mega Akció! Csere-Beszámítás! Gigabyte Aorus 17H! I7 13700H / RTX 4080 / 32GB DDR5 / 1TB SSD!
- HP 17-CP2003NH - 17,3" Full HD IPS - Ryzen 5 7520U - 8GB - 512GB - Win11 - MAGYAR - 2+ év garancia
- Telefon felvásárlás!! Samsung Galaxy A14/Samsung Galaxy A34/Samsung Galaxy A54
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

É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.
