C++函数模板

博客介绍了函数模板和类模板及其实例化。函数模板代表函数家族,与类型无关,使用时参数化。其实例化有隐式和显示两种方式。类模板如动态顺序表,实例化需在类名后加<>并放入实例化类型,实例化结果才是真正的类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、函数模板

函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定 类型版本。
格式:template<typename T1, typename T2,…,typename Tn>

template <typename T>
void Swap(T& left,T& right){
   T temp = left;
   left = right;
   right = temp;
   }

注意:typename是用来定义模板参数关键字,也可以使用class(切记:不能使用struct代替class)

2、函数模板的实例化

1、隐式实例化:让编译器根据实参推演模板参数的实际类型

template <typename T>
T Add(T& i,T&j){
return i+j;
}
int main(){
int i 1= 10,j1=20;
double i2=10.0,j2=20.0;
Add(i1,j1);
Add(i2,j2);
Add(i1,(int)i2);
}

2、显示实例化:显示在函数名后的<>中指定模板参数的实际类实例化

int main(){
int i=10;
double j=20.0;
Add<int>(i,j);
return 0;
}

3、类模板

template<class T1, class T2, ..., class Tn>
 class 类模板名 {  
   // 类内成员定义
    };    

动态顺序表:

typedef int DataType;
typedef char DataType;

template<class T>
class Vector{
public:
	Vector(size_t capacity = 10)
		:_data(new T[capacity])
		, size(0)
		, capacity(capacity)
	{}
	Vector();
	void pushBack(T x){
		_data[_size++] = x;
	}
	const T& operator[](size_t i)const{
		cout << "const T& operator[](size_t i)const" << endl;
		assert(i < _size);
		return _data[i];
	}
	T& operator[](size_t i)
	{
		cout << "T& operator[](size_t i)" << endl;
		assert(i < _size);
		return _data[i];
	}
	size_t Size()const{
		return _size;
	}
	~Vector(){
		if (_data){
			delete[] _data;
			_data = nullptr;
			_size = 0;
			_capacity = 0;
		}
	}
private:
	T* _data;
	size_t size;
	size_t _capacity;
	                      
};

template <class T> 
Vector<T>::~Vector() 
{  
  if(_pData)
      {      
        delete[] _pData;  
          } 
}
 注意:Vector不是具体的类,是编译器根据被实例化的类型生成具体类的模具

4、类模板的实例化

类模板实例化需要在类模板名字后跟<>,然后将实例化的类型放在<> 中即可,类模板名字不是真正的类,而实例化的结果才是真正的类。

template <class T>
Vector<int> s1;
s1.PushBack(1);
s1.PushBack(2);
s1.PushBack(3);

Vector<double> s2;
s2.PushBack(1.0);
s2.PushBack(2.0);
s2.PushBack(3.0);
内容概要:本文针对火电厂参与直购交易挤占风电上网空间的问题,提出了一种风火打捆参与大用户直购交易的新模式。通过分析可再生能源配额机制下的双边博弈关系,建立了基于动态非合作博弈理论的博弈模型,以直购电价和直购电量为决策变量,实现双方收益均衡最大化。论文论证了纳什均衡的存在性,并提出了基于纳什谈判法的风-火利益分配方法。算例结果表明,该模式能够增加各方收益、促进风电消纳并提高电网灵活性。文中详细介绍了模型构建、成本计算和博弈均衡的实现过程,并通过Python代码复现了模型,包括参数定义、收益函数、纳什均衡求解、利益分配及可视化分析等功能。 适合人群:电力系统研究人员、能源政策制定者、从事电力市场交易的工程师和分析师。 使用场景及目标:①帮助理解风火打捆参与大用户直购交易的博弈机制;②为电力市场设计提供理论依据和技术支持;③评估不同政策(如可再生能源配额)对电力市场的影响;④通过代码实现和可视化工具辅助教学和研究。 其他说明:该研究不仅提供了理论分析,还通过详细的代码实现和算例验证了模型的有效性,为实际应用提供了参考。此外,论文还探讨了不同场景下的敏感性分析,如证书价格、风电比例等对市场结果的影响,进一步丰富了研究内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值