您的位置:首页 > 新闻 > 资讯 > 网推拉新平台_界面软件开发工具_百度seo服务_官网seo怎么做

网推拉新平台_界面软件开发工具_百度seo服务_官网seo怎么做

2024/12/26 8:13:02 来源:https://blog.csdn.net/Y2663438690/article/details/144704809  浏览:    关键词:网推拉新平台_界面软件开发工具_百度seo服务_官网seo怎么做
网推拉新平台_界面软件开发工具_百度seo服务_官网seo怎么做

一.函数模版

1.定义:用来产生一组重组的函数,这些函数具有共同的逻辑和操作步骤,但其输入和输出的数据类型可以不一样

2.模版的语法形式

 

3.例子:

template<typename T>
T maximum(T value1, T value2, T value3) {T maximumValue = value1; // 假设 value1 是最大值// 判断 value2 是否大于 maximumValueif (value2 > maximumValue) {maximumValue = value2;}// 判断 value3 是否大于 maximumValueif (value3 > maximumValue) {maximumValue = value3;}return maximumValue;
} // 结束函数模板 maximum
  • int,float,double等具体类型替换T
  • 同一个类型参数只能替换为同一种数据类型,即value1,value2,value3为同一种数据类型

#include <iostream> // 需要包含头文件以使用cout和cinusing namespace std;// 假设maximum函数模板已经在上面定义int main() {// 演示使用整数int int1, int2, int3;cout << "Input three integer values: ";cin >> int1 >> int2 >> int3;// 调用整数版本的maximum函数cout << "The maximum integer value is: " << maximum(int1, int2, int3) << endl;// 演示使用双精度浮点数double double1, double2, double3;cout << "\nInput three double values: ";cin >> double1 >> double2 >> double3;// 调用双精度浮点数版本的maximum函数cout << "The maximum double value is: " << maximum(double1, double2, double3) << endl;// 直接使用模板参数调用maximum函数cout << "The maximum double value is: " << maximum<double>(4, 5, 3) << endl;return 0; // 结束main函数
}
    // 调用整数版本的maximum函数cout << "The maximum integer value is: " << maximum(int1, int2, int3) << endl;

实参类型int替换T,创建int版本的maximum的函数,其他的以此类推

  • 被同名,具有不同形参列表的函数模版重载
  • 被同名,具有不同形参列表的非函数模版重载

 注意:T1与T2类型不同,且为值拷贝

 

二.类模版 

自定义类模版

template <typename T1, typename T2>
class Pair {
private:T1 first;T2 second;public:Pair(const T1& f, const T2& s) : first(f), second(s) {}T1 getFirst() const { return first; }T2 getSecond() const { return second; }
};
实例化类模版
  • 实例化了一个 Pair 对象,其中 T1 被实例化为intT2 被实例化为 double
Pair<int, double> myPair(5, 3.14);

使用显式模版实参:


作用:使用显式模板实参列表来明确指定模板实例化时使用的模板参数,而不是让编译器根据上下文推断,这在某些情况下可能是必要的。

格式:当使用显式模板实参列表时,可以在模板名称后面使用尖括号(<>)来指定模板参数。这样可以确保使用指定的模板参数进行实例化,而不依赖于编译器的模板参数推断。

#include <iostream>template <typename T>
void printValue(T value) {std::cout << value << std::endl;
}int main() {printValue<int>(5); // 显式指定模板参数为int// printValue(5); //不显式指定模版参数,编译器会推断模板参数为intprintValue<double>(3.14); // 显式指定模板参数为doubleprintValue(3.14); // 不显式指定模版参数,编译器会推断模板参数为doublereturn 0;
}

<int>和 <double> 就是显式模板实参列表,它们明确指定了在调用printValue 函数时应该使用的模板参数类型。

 (这是类模版接口与实现未分离的情况,未来会补充接口与实现分离的情况)

三.例题 

【程序题】

编写一个程序,它利用名为minimum的函数模板来确定两个参数中的较小值。分别用整型、字符型和浮点型的实参测试该程序。

输入:

10 5s g12.5 99.8

输出:

The smaller integer value is:5The smaller character value is:gThe smaller double value is:12.5

代码:

定义与实现放在了一起

#include<iostream>
#include<cstring>
using namespace std;
template<typename T>
T minimum(const T& a, const T& b)
{if (a > b){return b;}elsereturn a;
}int main()
{int a=0, b=0;cin >> a >> b;char ch1='\0', ch2 = '\0';cin >> ch1 >> ch2;double c=0, d=0;cin >> c >> d;cout << "The smaller integer value is:" << minimum(a, b)<< endl;cout << "The smaller character value is:" << minimum(ch1, ch2)<< endl;cout << "The smaller double value is:" << minimum(c, d) << endl;return 0;
}

注意:

  • 模板函数声明中的T minimum<const T& a, const T& b>;是错误的。正确的声明应该是template<typename T> T minimum(const T& a, const T& b);
  • char ch1 = NULL, ch2 = NULL;是错误的。字符变量应该使用单引号,例如char ch1 = '\0', ch2 = '\0';

cout方面

应该是

	cout << "The smaller integer value is:" << minimum(a, b)<< endl;cout << "The smaller character value is:" << minimum(ch1, ch2)<< endl;cout << "The smaller double value is:" << minimum(c, d) << endl;

 而不是

	cout << "The smaller integer value is:minimum(a,b)" << endl;cout << "The smaller character value is:minimum(ch1,ch2)" << endl;cout << "The smaller double value is:minimum(c,d)" << endl;

cout语句中,你不能直接将函数调用minimum(a,b)嵌入到字符串中,因为C++不会识别这种语法。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com