Hirdetés
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Redmi Buds 5 és Buds 5 Pro - feláron vagy féláron?
- Samsung Galaxy A54 - türelemjáték
- iPhone topik
- Az igazi Nokia örökébe lép egy legendás európai okostelefon
- Google Pixel 9a - a lapos munka
- Honor 200 Pro - mobilportré
- Xiaomi 15T Pro - a téma nincs lezárva
- Fele annyit ér az iPhone Air, mint amennyibe pár hete került
- Google Pixel topik
Új hozzászólás Aktív témák
-
jattila48
aktív tag
válasz
Boryszka
#2831
üzenetére
A matrix_base-től való öröklés szerintem felesleges, főleg private módon. A következő header jó kiindulás lehet:
template<typename T,int n,int m> class my_matrix{
public:
typedef T scalar_type;
/*
my_matrix(const my_matrix& mm){
int i,j;
for(int i=0;i<n;++i){
for(j=0j<m;++j){
matrix[i][j]=mm[i][j];
}
}
}
my_matrix &operator=(const my_matrix &mm){
}
*/
my_matrix(){
int i,j;
for(i=0;i<n;++i){
for(j=0;j<m;++j){
matrix[i][j]=T();
}
}
}
my_matrix & operator+=(const my_matrix &mm){
int i,j;
for(i=0;i<n;++i){
for(j=0;j<m;++j){
matrix[i][j]+=mm.matrix[i][j];
}
}
return *this;
}
my_matrix & operator*=(T c){
int i,j;
for(i=0;i<n;++i){
for(j=0;j<m;++j){
matrix[i][j]*=c;
}
}
return *this;
}
my_matrix operator+(const my_matrix &mm){
my_matrix t(*this);
int i,j;
for(i=0;i<n;++i){
for(j=0;j<m;++j){
t.matrix[i][j]+=mm.matrix[i][j];
}
}
return t;
}
my_matrix & operator=(const my_matrix &mm){
int i,j;
for(i=0;i<n;++i){
for(j=0;j<m;++j){
matrix[i][j]-=mm.matrix[i][j];
}
}
return *this;
}
const T & operator()(int i,int j) const{
assert(i<n && j<m);
return matrix[i][j];
}
T & operator()(int i,int j){
return const_cast<T &>(const_cast<const my_matrix *>(this)->operator()(i,j));
}
private:
my_matrix(const my_matrix &a,const my_matrix &b){
int i,j;
for(i=0;i<n;++i){
for(j=0;j<m;++j){
matrix[i][j]=a.matrix[i][j]+b.matrix[i][j];
}
}
}
T matrix[n][m];
};
/*
template<typename T> T operator+(T a, T b){
T c(a);
c+=a;
return c;
}
*/
template<typename T,int n,int m,int k> my_matrix<T,n,m> operator*(const my_matrix<T,n,k> &a,const my_matrix<T,k,m> &b){
my_matrix<T,n,m> c;
int i,j,l;
for(i=0;i<n;++i){
for(j=0;j<m;++j){
T s=T();
for(l=0;l<k;++l){
s+=a(i,l)*b(l,j);
}
c(i,j)=s;
}
}
return c;
}
template<typename T> T operator*(T A,typename T::scalar_type c){
T t(A);
t*=c;
return t;
}
template<typename T> T operator*(typename T::scalar_type c,T A){
return operator*(A,c);
}Copy ctor-t és értékadó operátort csak akkor kell írnod, ha a scalar_type (a mátrix elemeinek típusa) nem triviálisan másolható. Ezt pl. type trait-tal is ellenőrizheted. A + operator lehet tfv. is, ha nincs más típusról implicit konverzió. Különben free fv.-nek kell lenni. Én most nem írtam 1 paraméteres ctort, így nem lehet implicit konverzió (kivéve, ha más osztálynak van my_matrix-ra konverziós operátora).
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- EAFC 26
- Amlogic S905, S912 processzoros készülékek
- Kerékpárosok, bringások ide!
- Google One vs iCloud vs OneDrive – melyik a legjobb választás 2025-ben?
- Pánik a memóriapiacon
- Apple MacBook
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Futás, futópályák
- Redmi Buds 5 és Buds 5 Pro - feláron vagy féláron?
- További aktív témák...
- LENOVO IDEAPAD 1 15 - Ryzen 5 5500U, 15.6FULL HD, 512 GB, 16GB, LENOVO Premium Care garis
- Lenovo ThinkPad X13 Gen 4 i5-1345U 16GB DDR5 512GB SSD FHD+ Garancia 2027.11.10-ig
- HP EliteBook 640 G10 i5-1335U 16GB RAM 256GB SSD FHD Garancia
- Lenovo ThinkPad X13 Gen 2 i5-1145G7 16GB RAM 256GB SSD FHD+ gari.l 4g modem
- MSI Thin GF63 12UDX 15.6" FHD IPS i5-12450H RTX 3050 16GB 512GB NVMe magyar vbill gar
- BESZÁMÍTÁS! SAPPHIRE B650M R7 8700F 32GB DDR5 512GB SSD RX 6800XT 16GB Zalman Z1 GIGABYTE 750W
- GYÖNYÖRŰ iPhone 15 128GB Black -1 ÉV GARANCIA - Kártyafüggetlen, MS3944, 100% Akkumulátor
- Apple iPhone 13 Pro 128GB, Kártyafüggetlen, 1 Év Garanciával
- LG 27GR93U-B - 27" IPS - UHD 4K - 144Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDR 400
- Újszerű Dell Latitude 7440 -14"FHD+1 IPS - i5-1345U 16GB - 512GB - Win11 - 1 év garancia + Dokkoló +
Állásajánlatok
Cég: BroadBit Hungary Kft.
Város: Budakeszi
Cég: ATW Internet Kft.
Város: Budapest




