[c++]——什么是类型萃取

类型萃取

类型萃取从字面意思上来说其实就是帮助我们挑选某个对象的类型,筛选特定的对象来做特定的事。

C++中的类型萃取并不是每个人都熟知,他们一般都出现在STL库底层的实现原理中,和笔者一样,相信听到这个名词的读者都好奇类型萃取到底是什么,他是用来做什么事情的?不妨让我们一探究竟

从vector增容说起

要说类型萃取,还需要从vector增容说起,我截取出一段之前笔者模拟实现vector增容的代码:

void Reserve(size_t n) {
   
	if (n > Capicaty())	{
   
		size_t size = Size();
		T* tmp = new T[n];
		if (size > 0) {
   
			for (size_t i = 0; i < size; i++) {
   
				tmp[i] = this->_start[i];
			}
			delete[] _start;
		}
		_start = tmp;
		_finish = _start + size;
		_endofstorage = _start + n;
	}
}

这段代码是完全正确的,但是唯一不足的就是我们拷贝的方式统一使用了赋值的形势。之所以使用“=”赋值的形式,是因为我们在进行深拷贝,防止string类型的对象只拷贝了指针,却没考虑到内存。

这其实就是一个典型的深浅拷贝的问题,我们都知道C++的内置类型变量,例如int、shor

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值