SGI STL 源码分析(四)Vector构造的过程

/explicit 防止隐式类型转换。并且在参数中拿到一个分配器,用VectorBase里面的分配器来初始化他。
	//这里调用的Vector里面的默认构造函数。
	explicit vector(const allocator_type& __a = allocator_type())
		: _Base(__a) {}

	//传递进来的是有长度,并且有类型的话,就会调用VectorBase里面指定长度初始化的构造函数。
	//依然是用Base里面的分配器来分配。
	vector(size_type __n, const _Tp& __value,
		const allocator_type& __a = allocator_type())
		: _Base(__n, __a)
	{
		_M_finish = uninitialized_fill_n(_M_start, __n, __value);//这个底层实现就调用了个fill_n
		/*fill_n 从_M_start 开始填充值,填充_n个,_value的值。*/
	}

	//如果传递进来的只有长度而类型对象已经初始化好了的话
	//就直接调用已经分配好了的对象。
	explicit vector(size_type __n)
		: _Base(__n, allocator_type())
	{
		_M_finish = uninitialized_fill_n(_M_start, __n, _Tp());
		//从_M_start开始填充__n个,_Tp()对象。
	}

	//这是在一个Vector里面放入了另外一个Vector。
	//比如在Vector1中放入Vector2,Vector2的大小是size()算法提供的长度,还是由Base里面来提供分配器。
	vector(const vector<_Tp, _Alloc>& __x)
		: _Base(__x.size(), __x.get_allocator())
	{
		_M_finish = uninitialized_copy(__x.begin(), __x.end(), _M_start);//底层调用了一个Copy()算法
		//将__x.begin()到__x.end()的值Copy到_M_start 指针的位置。
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 最新的SGI STL源码可以从以下几个渠道进行下载。 首先,你可以在GitHub上找到SGI STL的官方仓库。在该仓库中,你可以浏览并下载最新的源代码文件。GitHub提供了多种形式的下载选项,你可以选择下载整个仓库的压缩文件(zip格式),或者直接克隆仓库到本地。 其次,你还可以访问SGI STL的官方网站,该网站上提供了SGI STL的下载链接。进入官方网站后,你可以查看可供下载的最新版本,然后选择所需的版本进行下载。官方网站通常会提供详细的文档和说明,帮助你更好地使用和理解SGI STL源码。 此外,你还可以通过搜索引擎查找其他第三方网站或平台上提供的SGI STL源码下载链接。这些网站也可能提供最新版本的下载选项,但请注意检查源码的可靠性和合法性。 无论你选择哪种方式下载SGI STL源码,建议先仔细阅读相关文档,理解源码的结构和使用方法,以便更好地应用和扩展SGI STL库。 ### 回答2: 最新的SGI STL源码可以通过以下方式进行下载: 1. 访问SGI官方网站:SGI(STL)是由Silicon Graphics Inc.开发的,可以在其官方网站上找到最新的源码下载链接。可以使用搜索引擎来查找SGI官方网站,并在网站上查找STL源码的下载链接。 2. 在Github上搜索:Github是一个开源代码托管平台,许多开发者会将他们的代码上传到这个平台上。在Github上,你可以搜索SGI STL,并找到与STL相关的仓库。浏览相关仓库,找到最新版本的STL源码并进行下载。 3. 使用相关的开发者论坛和社区:在许多专门的开发者论坛和社区中,你可以找到你所需要的开发资源。参与这些论坛,提出你的需求,寻求帮助并询问最新的SGI STL源码下载途径。其他开发者可能会分享他们的经验和提供相应的下载链接。 4. 前往开发者相关的网站:有一些开发者网站会提供各种开发资源的链接和下载。搜索一些开发者网站,并检查他们所提供的STL源码下载选项。 总之,要下载最新的SGI STL源码,你可以通过访问SGI官方网站、使用Github进行搜索、参与开发者论坛和社区或前往开发者相关的网站来获取下载链接。确保你下载的是经过验证的可靠源码,并在你的项目中合理使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值