SGI STL中的construct

SGL STL 中虽然有标准的allocate但是实际中使用的确是alloc
它们的主要区别就是alloc 不和allocate一样只是对new和delete进行封装。
new算式其实含有两段操作,1.配置内存,2构造队形。delete:1.析构对象,2.释放内存
在alloc就把中就把这两段操作分开为stl_construct.h(构造对象)和stl_alloc.h(分配内存)
下面就是stl_construct.h

//SGL 中的特殊的空间适配器 alloc
//把配置的内存和构造对象分开了
//分为了 <stl_construct.h>,<stl_alloc.h>,<stl_uninitialized.h>
//此为<stl_construct.h>
#include<new>

template <typename T1, typename T2>
inline void construct (T1 * p, const T2 & value) //构造元素 
{
    new (p) T1(value);
}

template <typename T>
inline void destroy (T * pointer)
{
    pointer->~T();//显示调用T 的析构函数 
}

template<typename ForwardIterator>
inline void destroy (ForwardIterator first, ForwardIterator last)//接受两个迭代器,设法找出元素类型 
{
    _destroy(first,last,value_type(first));
}

template <typename ForwardIterator>
inline void _destroy_aux(ForwardIterator first , ForwardIterator last , __false_type) //若销毁元素时元素的析构函数有意义则调用此函数 
{
    for(; first < last ; ++first)
    {
        destroy(&*first);
    }
}

template <typename ForwardIterator>
inline void _destroy_aux( ForwardIterator , ForwardIterator , __true_type)//重载的_destroy_aux若元素没有有意义的析构则调用此函数 
{} 

inline void destroy (char * ,char *){}
inline void destroy (wchar_t * , wchar_t *){}


这其中的value_type()和__type_traits 就是判断元素类型这个以后再说.
这样做的主要目的就是为了避免有的元素的析构元素无用而我们还浪费时间的去调用他们。

  • 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、付费专栏及课程。

余额充值