色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

cpp模板的優點

夏志豪2年前23瀏覽0評論

cpp模板的優點?

使用模板的目的:

模板是C++標準中相當重要的一部分,它是通用編程成為現實的理想方法。模板還有在編譯時被解釋的特點。模板是對迅速解決復雜問題有效手段,特別是標準模板類庫

使用模板的優缺點:

(1) 優點 : 1)編寫一個模板,就可以在實例化的時候 由一個模板解決不同類型數據所產生的相同問題;比如說排序問題,你可以給int 數據排序和cha類型數據排序,沒有引入類模板,就需要編寫兩次排序函數,而引入類模板之后,就可以在實例化的時候,根據不同的數據類型實例化排序方法,做到一模板半多用的作用,即多態。

2)實現了代碼的重用,節約了程序員時間和精力,這也是出現標準庫的原因

(2) 缺點:1)模板的數據類型只能在編譯時才能被確定。因此,所有用基于模板算法的實現必須包含在整個設計的頭文件中。

2)由于模板只是最近加入C++標準中,所以有些C++編譯器還不支持模板,當使用這些編譯器時編譯含有模板的代碼時就會發生不兼容問題。

關于模板的例子

(1)函數模版

#include<iostream>

using namespace std;

template <typename T>

T maximum(const T n1,const T n2)

{

if(n1>n2)

return n1;

else

return n2;

}

int main()

{

charc1='a',c2='b';

inti1=1,i2=2;

double f1=2.5,f2=3.5;

cout<<maximum(c1,c2)<<endl;

cout<<maximum(i1,i2)<<endl;

cout<<maximum(f1,f2)<<endl;

return 0;

}

(2)類模板

文件1: stack.h

#if !defined SATACK_T_H

#define SATACK_T_H

template <typename T>

class stack

{

public:

stack( int n = 10 );

~stack();

bool pop(T & data_item);

bool push(const T & data_item);

inline int number_stacked()const;

inline int stack_size() const;

private:

int max_size;

int top;

T* data;

};

template<typename T>

stack<T>::stack(int n)

{

max_size = n;

top = -1;

data = new T[n];

}

template<typename T>

stack<T>::~stack( )

{

delete [] data;

}

template<typename T>

bool stack<T>::push(const T &data_item )

{

if( top < max_size - 1)

{

data[++ top ] = data_item ;

return true;

}

else

return false;

}

template<typename T>

bool stack<T>::pop(T & data_item)

{

if( top > -1 )

{

data_item = data [top -- ];

return true;

}

else

return false;

}

template<typename T>

int stack<T>::number_stacked() const

{

return top+1;

}

template<typename T>

int stack<T>::stack_size() const

{

return max_size;

}

#endif

在這里需要注意一個問題:

引用類模板時必須包含它的形參列表,這就是成員函數使用stack《T》而不是stack的原因。如果堆棧類不是模板,僅需要使用stack。