欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

STL源代码分析(ch2 内存分配)destroy

发布时间:2025/3/21 编程问答 30 豆豆
生活随笔 收集整理的这篇文章主要介绍了 STL源代码分析(ch2 内存分配)destroy 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1. 两个版本

1.1 参数是指针

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

1.2. 参数接受两个迭代器

接受两个迭代器。它会设法找出元素的数值型別,进而利用 __type_traits<> 求取最适当措施。

template <class ForwardIterator> inline void destroy(ForwardIterator first, ForwardIterator last) {__destroy(first, last, value_type(first)); }

->
判断元素的数值型別(value type)是否有 trivial destructor,分别调用上面的函数进行不同的处理

template <class ForwardIterator, class T> inline void __destroy(ForwardIterator first, ForwardIterator last, T*) {typedef typename __type_traits<T>::has_trivial_destructor trivial_destructor;__destroy_aux(first, last, trivial_destructor()); }

->

// 如果元素的数值型別(value type)有 non-trivial destructor… template <class ForwardIterator> inline void __destroy_aux(ForwardIterator first, ForwardIterator last, __false_type) {for ( ; first < last; ++first)destroy(&*first);//调用析构函数 }// 如果元素的数值型別(value type)有 trivial destructor… template <class ForwardIterator> inline void __destroy_aux(ForwardIterator, ForwardIterator, __true_type) {}//不调用析构函数

总结

以上是生活随笔为你收集整理的STL源代码分析(ch2 内存分配)destroy的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。