C 簡單Vector模板類

2021-07-05 13:10:20 字數 2153 閱讀 7522

用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,當你新增第十乙個元素時,他會自己找一篇新的足夠大領土 記憶體 然後搬家 把舊址複製過去 而陣列同志顯...