題目描述
實現乙個向量類,在類中,分別過載 「+, -, *(數乘,矩陣乘) 」 基本運算以及 「==,!=,-(負號), =(賦值)" 操作符,以實現向量基本運算。
要求:除了過載相應的操作符,也需要實現乙個類的一些基本的方法(介面),比如構造、析構、拷貝構造等。
可以使用c++標準模板庫(stl)裡面的vector類,也可以使用你前一次作業實現的動態陣列作為你這次所要實現的向量類的基礎。
/*向量類的過載運算
* by——keli
*2020.12.12
*/#include
#include
#include
#include
#include
using
namespace std;
class
vector
;vector::
vector()
vector::
vector
(int length,
const
double data)
}vector::
vector
(int length,
const
double data)
//length個資料初始為data
}vector::
~vector()
int vector::
size()
double vector::
operator
(int index)
vector vector::
operator+(
const vector& temp)
vector sum;
//和向量
for(
int i =
0; i < p.
size()
; i++
)return sum;
}vector vector::
operator-(
const vector& temp)
vector difference;
//差向量
for(
int i =
0; i < p.
size()
; i++
)return difference;
}vector vector::
operator*(
const
double a)
return product;
}bool vector::
operator==(
const vector& temp)
bool vector::
operator!=(
const vector& temp)
vector vector::
operator-(
)return opposite;
}vector vector::
operator=(
const
double element)
vector vector::
operator+(
const
double element)
return dst;
}vector vector::
operator-(
const
double element)
return dst;
}std::ostream&
operator
<<
(std::ostream& os,
const vector& vector)
//把無效向量設定為0向量
vector vector::
invalid_vector(0
,1.0);
intmain
(int argc,
char
*ar**)
; vector v
(sizeof
(data1)
/sizeof
(double
), data1)
;// 確保完備的初始化向量
assert
(v.size()
==sizeof
(data1)
/sizeof
(double))
;for
(int idx =
0; idx <
sizeof
(data1)
/sizeof
(double);
++idx)
// v的值應等於自身,且不會不等於自身
assert
(v == v)
;assert(!
(v != v));
// v + v按元素分別求和的結果,相當於每個元素直接與2相乘
assert
(v + v == v *2)
;// v - v按元素分別求和的結果,相當於v加上v的相反數
assert
(v - v == v +
(-v));
// v = 3的結果使向量的每個元素都變為3,因此等於直接初始化乙個只有三個元素,且初始值為3的向量
assert
((v =3)
==vector
(sizeof
(data1)
/sizeof
(double),
3));
// v + 3的結果使向量的每個元素都加上3,因此等於直接初始化乙個只有三個元素,且初始值為6的向量
// 而 v - 3則直接初始化乙個只有三個元素,且初始值為0的向量
assert
(v +3==
vector
(sizeof
(data1)
/sizeof
(double),
6));
assert
(v -3==
vector
(sizeof
(data1)
/sizeof
(double),
0.0));
// 另行定義乙個有十個元素,且每個元素值為5的向量
vector v2(10
,5);
// 確保其正確初始化
assert
(v2.
size()
==10);
for(
int idx =
0; idx < v2.
size()
;++idx)
// 兩個元素個數不相等的向量相加,其結果為【無效向量】
assert
(v + v2 == vector::invalid_vector)
;return0;
}
vector向量容器
vector容器是陣列的乙個泛化推廣,不僅可以像陣列那樣進行元素的隨機訪問,還可以在容器的尾端插入新元素,實現了random access container和back insertion sequence概念。vector具有自動的記憶體管理功能,對於元素的插入和刪除,能夠動態調整占用的記憶體空間...
Vector向量容器
vector向量容器優點 1 vector向量容器不但能像陣列一樣對元素進行隨機訪問,還能在尾部插入元素,是一種簡單 高效的容器,完全可以取代陣列。2 vector向量容器具有記憶體自動管理的功能,對於元素的插入和刪除,可動態調整所佔的記憶體空間。3 對於vector容器的容量定義,可以事先定義乙個...
vector向量容器
vector向量容器 include include vector向量容器標頭檔案 include c語言標頭檔案 include 使用sort演算法 using namespace std bool comp int a,int b 自定義函式從大到小排序 int main cin x v.ins...