用template 來實現n維向量的相關性質。
寫的時候其中有幾個關鍵的地方
1.模板類的函式定義必須和標頭檔案放在乙個cpp檔案裡,系統不支援模板類的單獨編譯。
2.定義模板類的成員(友元)函式時,都要加 template or template 。
3.對於模板類的友元函式,都宣告成了非約束(unbound)模板友元。 ( 詳見參考blog)
4.缺陷在於沒有更細緻的了解模板以及沒有新增異常處理等情況。
以下簡單**實現
#ifndef vector_h
#define vector_h
#include #include #include #include "vector.h"
#includeusing namespace std;
templateclass vector
vector & operator=(const vector& temp);
template friend vectoroperator+(vector&temp1,vector&temp2);
template friend vectoroperator-(vector&temp1,vector&temp2);
t find(t& temp);
t operator*(vector&temp);
t norm (vector&temp);
vector & unit(vector&temp);
template friend vectorvector_cross_product(vector&temp1,vector&temp2);
template friend bool perpendicular(vector&temp1,vector&temp2);
template friend bool parallel(vector&temp1,vector&temp2);
template friend ostream & operator<<(ostream &out, const vector&temp);
template friend istream & operator>>(istream &in,vector&temp);
protected:
t *array;
int len;
int sum;
};//0.預設建構函式
template vector::vector()
//1.拷貝建構函式
template vector:: vector(vector&temp)
//2.向量的賦值
templatevector& vector:: operator=(const vector&temp);
return *this;
}//3.在向量中查詢某個分向量的位置
templatet vector:: find(t& temp)
//4.向量的加法
templatevectoroperator+(vector&temp1,vector&temp2)
//5.向量的減法
templatevectoroperator-(vector&temp1,vector&temp2)
return temp;
}//10.判斷向量垂直
templatebool perpendicular(vector&temp1,vector&temp2)
#endif
//test_vector.cpp
#include #include #include #include #include #include "vector.h"
const int maxn=1e5+5;
using namespace std;
/*測試:
0.建構函式,拷貝建構函式
1. i/o操作
2.向量的賦值
3.查詢向量分量位置
4.向量的加法
5.向量的減法
6.向量的點積
7.向量的模
8.向量的單位化
9.向量的叉積
10.判斷向量垂直
11.判斷向量平行
*/void test1()
return 0;
}
C 模板類vector和array
模板類vector和array是陣列的替代品。1.模板類vector 模板類vetor類似於string類,也是一種動態陣列。可以在執行階段設定vector物件的長度,可在末尾附加新資料,還可在中間插入新資料。基本上,它是使用new建立動態陣列的替代品。實際上,vector類確實使用new和dele...
C 中 vector容器 模板類陣列
對vector容器的一點理解,相對於陣列,vector容器可以不固定大小,但是需要而外的記憶體 空間,這是用空間來換取陣列動態大小的一種方式 1.定義 vector a 定義了乙個空的int型陣列 vectorb n 定義了乙個長度為n的double型陣列 vectorb c 定義乙個c的副本 ve...
Vector模板類的使用
vetcor顧名思義就是乙個向量的容器,該容器中的每個元素都屬於同乙個型別,有點類似於陣列,vetor容器與陣列的不同之處就在於,它具有 動態 的屬性,舉例來說,如果定義了乙個vector容量為10,當你新增第十乙個元素時,他會自己找一篇新的足夠大領土 記憶體 然後搬家 把舊址複製過去 而陣列同志顯...