首页 > 其他分享 >5.22模版 初见云雨情

5.22模版 初见云雨情

时间:2023-05-22 21:12:54浏览次数:28  
标签:const 模版 elems pop 5.22 template 云雨 include Stack

函数模板
模板函数定义的一般形式如下所示:

template <typename type> ret-type func-name(parameter list)
{
// 函数的主体
}
在这里,type 是函数所使用的数据类型的占位符名称。这个名称可以在函数定义中使用。

下面是函数模板的实例,返回两个数中的最大值:

实例
#include <iostream>
#include <string>

using namespace std;

template <typename T>
inline T const& Max (T const& a, T const& b)
{
return a < b ? b:a;
}
int main ()
{

int i = 39;
int j = 20;
cout << "Max(i, j): " << Max(i, j) << endl;

double f1 = 13.5;
double f2 = 20.7;
cout << "Max(f1, f2): " << Max(f1, f2) << endl;

string s1 = "Hello";
string s2 = "World";
cout << "Max(s1, s2): " << Max(s1, s2) << endl;

return 0;
}
当上面的代码被编译和执行时,它会产生下列结果:

Max(i, j): 39
Max(f1, f2): 20.7
Max(s1, s2): World
类模板
正如我们定义函数模板一样,我们也可以定义类模板。泛型类声明的一般形式如下所示:

template <class type> class class-name {
.
.
.
}
在这里,type 是占位符类型名称,可以在类被实例化的时候进行指定。您可以使用一个逗号分隔的列表来定义多个泛型数据类型。

下面的实例定义了类 Stack<>,并实现了泛型方法来对元素进行入栈出栈操作:

实例
#include <iostream>
#include <vector>
#include <cstdlib>
#include <string>
#include <stdexcept>

using namespace std;

template <class T>
class Stack {
private:
vector<T> elems; // 元素

public:
void push(T const&); // 入栈
void pop(); // 出栈
T top() const; // 返回栈顶元素
bool empty() const{ // 如果为空则返回真。
return elems.empty();
}
};

template <class T>
void Stack<T>::push (T const& elem)
{
// 追加传入元素的副本
elems.push_back(elem);
}

template <class T>
void Stack<T>::pop ()
{
if (elems.empty()) {
throw out_of_range("Stack<>::pop(): empty stack");
}
// 删除最后一个元素
elems.pop_back();
}

template <class T>
T Stack<T>::top () const
{
if (elems.empty()) {
throw out_of_range("Stack<>::top(): empty stack");
}
// 返回最后一个元素的副本
return elems.back();
}

int main()
{
try {
Stack<int> intStack; // int 类型的栈
Stack<string> stringStack; // string 类型的栈

// 操作 int 类型的栈
intStack.push(7);
cout << intStack.top() <<endl;

// 操作 string 类型的栈
stringStack.push("hello");
cout << stringStack.top() << std::endl;
stringStack.pop();
stringStack.pop();
}
catch (exception const& ex) {
cerr << "Exception: " << ex.what() <<endl;
return -1;
}
}
当上面的代码被编译和执行时,它会产生下列结果:

turn 0;

}

标签:const,模版,elems,pop,5.22,template,云雨,include,Stack
From: https://www.cnblogs.com/galileo9527/p/17421731.html

相关文章

  • RSA之低指数攻击------2023.5.22
    1,e=3的小明文攻击:特点:当e=3时,如果明文过小,导致明文的三次方仍然小于n,那么通过直接对密文开三次方即可得到明文。 即:C=m^e mod n,如果e=3,且m^e<n,则C=m^e,m=c^(1/3) 2.如果明文的三次方比n大,但不是足够大,那么设k有: C=m^e+k∗n 爆破k,如果 C−k∗n 或者 C+k∗n......
  • 5.22 3.1
    一、问题描述求某一范围内完数的个数。如果一个数等于它的因子之和,则称该数为“完数”(或“完全数”。例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。二、分析for(i=2;i<=n;i++){....for(j=l;j<i;j++){...}if(s==i)输出当前i是完数}三、代码#include<iostream>usingna......
  • 5.22
    #include<stdio.h>main(){intm,n,temp,i;printf("Inputm&n:");scanf("%d%d",&m,&n);for(inti=1;;i++){if(i%m==0&&i%n==0){printf("%d",i);break;}}return0;}......
  • 云原生周刊:2023 年可观测性状态报告发布 | 2023.5.22
    Splunk与EnterpriseStrategyGroup合作发布了StateofObservability2023,这是一份年度全球研究报告,探讨了可观测性在管理当今日益复杂的技术环境中的作用。该报告将可观测性领导者定义为具有至少24个月的可观察性经验的组织。此外,领导者在以下五个因素中排名最高:跨所有可......
  • 建民打卡日记5.22
    一、问题描述我们看到,把数字0-9翻倒,有的数字就认不出来了,比如2、3、4、5、7;有的数字看上去没什么大的变化,比如0、1、8;还有的数字变成了另一个数,比如6变成9,9变成6。给定一堆数字,请你判别每个数有没有可能是另一个数字翻倒形成的。二、流程设计对每个给定的数字,如果它......
  • day76(2023.5.22)
    1.Filter过滤器 运行结果: 2.在Filter中设置请求编码 运行结果: 3.FilterConfig对象的使用 运行结果: 4.FilterChain(过滤器链) 5.Filter执行顺序 6.基于注解式开发Filter 7.Filter的生命周期 8.Listener监听器 9.ServletCo......
  • 5.22总结
    packagecom.mf.jdbc.exmaple;importcom.alibaba.druid.pool.DruidDataSourceFactory;importcom.mf.jdbc.Brand;importorg.junit.Test;importjavax.sql.DataSource;importjava.io.FileInputStream;importjava.sql.Connection;importjava.sql.PreparedStatement;......
  • irq中断相关(2023.5.22)
    //irq29:nobodycared(trybootingwiththe"irqpoll"option) //aer_irqthreaded   aer_isrDIsablingIRQ#105 https://blog.csdn.net/Guet_Kite/article/details/106689126note_interrupt(){if(unlikely(desc->irqs_unhandled>99900)){ ......
  • 5.22打卡
      3.程序流程图 4.代码实现#include<bits/stdc++.h>usingnamespacestd;inta[14];main(){inti,j=1,n;printf("ħÊõʦÊÖÖеÄÅÆԭʼ³ÌÐòÊÇ£º\n");for(i=1;i<=13;i++){n=1;do{......
  • 快速模版的本地化改进
    在快速模版中,使用了一个本地化类来实现本地化,但效果不算太好,因为生成操作需要切换不同的本地化包再进行打包。造成这个问题的主要原因是ExtJS自身需要通过重写来实现本地化。研究了一下kitchensink示例(ExtJS包的examples\kitchensink文件夹)实现本地化的方式,感觉比较恐怖,应用程序......