C++テンプレートの質問

5544、

トピックの内容:

P232例8.3

未知のタイプの1次元配列の最大値を見つけるための関数テンプレートを定義します。

main関数は、関数テンプレートをインスタンス化して、int int_array [] = {11,22,33,44,55,66,77,88,99,1010};
double double_array [] = {11.1,22.2,33.3,44.4、 55.5、66.6、77.7、88.8、99.9、100.10};2つの配列と出力の最大値。

入力と出力の説明:

輸出出:
int_maxは
1010double_maxは100.1
#include<iostream>
#include<cmath>
using namespace std;
template <class T>T getmax(T a[]){
    for(int i=0;i<10;i++){   
        if(a[0]<a[i]){
            a[0]=a[i];
        }
    }
    return a[0];
}
int main(){
    int int_array[]={11,22,33,44,55,66,77,88,99,1010};
    double double_array[]={11.1,22.2,33.3,44.4,55.5,66.6,77.7,88.8,99.9,100.10};
    cout<<"The int_max is "<<getmax(int_array)<<endl;
    cout<< "The double_max is "<<getmax(double_array)<<endl;
}

5545、

トピックの内容:

P232例8.4

 これらの2つの異なるタイプのデータの出力を実現するために、2つのパラメーターを使用して関数テンプレートを定義します

入力と出力の説明:

出力:
99 zhang 
123.45 888
#include<iostream>
using namespace std;
template <class T1, class T2>void  output(T1 a,T2 b){
    cout<<a<<" "<<b<<endl;
}
int main(){
    output(99,"zhang");
    output(123.45,888);
}

5546、

トピックの内容:

P236例8.8

同じタイプの3つのプライベートデータメンバーを含むクラステンプレートを定義します。クラステンプレートには、3つのデータの合計演算を実装するためのメンバー関数があります。このメンバー関数には、クラス外での定義が必要です。

テンプレートクラスオブジェクトを定義して、2つのデータセットの合計を見つけます。それぞれ(3、5、7)と(12.34、34.56、56.78)です。

入力と出力の説明:

輸出出:
three_intの合計は15
です。three_doubleの合計は103.68です。

 

#include<iostream>
using namespace std;
template <class T>
class sum{
private:
    T a,b,c;
public:
    sum(T a,T b,T c){
        this->a=a;
        this->b=b;
        this->c=c;
    }
    T getsum();
};
template<class T>
T sum<T>::getsum(){
    return this->a+this->b+this->c;
}
int main(){
    int intsum=0;
    double doublesum=0;
    sum<int> s1(3,5,7);
    intsum=s1.getsum();
    cout<<"The three_int sum is "<<intsum<<endl;
    sum<double> s2(12.34,34.56,56.78);
    doublesum=s2.getsum();
    cout<<"The three_double sum is "<<doublesum<<endl;
}

5536、

トピックの内容:

配列内で最大の要素を見つけるための関数テンプレートを作成し、関数が呼び出されたときに配列の型と戻り型を整数または倍精度にすることができます。

入力と出力の説明:

main関数で2つの1次元配列が定義されています。1つは整数、初期値は2、4、7、1、9、4、2、6、3、1、もう1つは
倍精度浮動小数点です。タイプの場合、初期値は2.2、4.4、7.8、1.4、9.9、4.6、2.3、6.6、3.1、1.3の場合です
。intmax = 9 
double max = 9.9
#include<iostream>
#include<cmath>
using namespace std;
template <class T>T getmax(T a[]){
    for(int i=0;i<10;i++){   
        if(a[0]<a[i]){
            a[0]=a[i];
        }
    }
    return a[0];
}
int main(){
    int int_array[]={2,4,7,1,9,4,2,6,3,1};
    double double_array[]={2.2,4.4,7.8,1.4,9.9,4.6,2.3,6.6,3.1,1.3};
    cout<<"int max= "<<getmax(int_array)<<endl;
    cout<<"double max= "<<getmax(double_array)<<endl;
}

5537、

トピックの内容:

 関数テンプレートを作成し、バブルソートを使用して配列の内容を小さいものから大きいものに並べ替え、関数が呼び出されたときに配列の型を整数または2倍にすることができます。

入力と出力の説明:

整数1次元配列の初期値は2、4、7、10、9、5、8、6、3、1です。
倍精度浮動小数点配列の初期値は2.2、4.4、7.8、1.4です。 、9.9、4.6、2.3、6.6、3.1、1.3
出力:
1 2 3 4 5 6 7 8 9 10 
1.3 1.4 2.2 2.3 3.1 4.4 4.6 6.6 7.8 9.9

 

#include<iostream>
using namespace std;
template<class T> void sort(T a[]){
    for(int i=0;i<10;i++){
        for(int j=0;j<9;j++){
            if(a[j]>a[j+1]){
                T t=0;
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
        }
    }
    for(int i=0;i<10;i++){
        cout<<a[i]<<" ";
    }
    cout<<endl;
}
int main(){
    int a[]={2,4,7,10,9,5,8,6,3,1};
    double b[]={2.2,4.4,7.8,1.4,9.9,4.6,2.3,6.6,3.1,1.3};
    sort(a);
    sort(b);
}

5538、

トピックの内容:

  クラステンプレート入力を作成し、コンストラクターを呼び出すときに、次の作業を完了します。

(1)ユーザーに入力を求める。

(2)ユーザーがデータを入力できるようにします。

(3)データが所定の範囲内にない場合は、再入力を求めてください。

入力型のオブジェクトは、次の形式で定義する必要があります。

input ob( "promput message"、min_value、max_value)

その中で、プロンプトメッセージは入力情報のプロンプトです。許容可能な最小値と最大値は、それぞれmin_valueとmax_valueで指定されます。

入力と出力の説明:

データが指定された範囲内にある場合は、データを正しく出力します。そうでない場合は、再入力を求めます
。入力:
1 9 3 
azf
出力:
3 
f

 

#include<iostream>
using namespace std;
template <class T>
class input{
    T min_value,max_value;

public:
    input(T min_value,T max_value){

        this->max_value=max_value;
        this->min_value=min_value;
    }
    void output(T a){
        if(min_value<=a&&a<=max_value){
            cout<<a<<endl;
        }
        else{
            cout<<"数据不符合范围,请重新输入。";
        }
    }
};
int main(){ 
    int x,y,z;
    cin>>x>>y>>z;
    input< int> in1(x,y);
    in1.output(z);
    char a,b,c;
    cin>>a>>b>>c;
    input < char> in2(a,b);
    in2.output(c);

}

おすすめ

転載: blog.csdn.net/qq_56350439/article/details/124476013