STL源代码分析(ch2 内存分配)destroy
生活随笔
收集整理的這篇文章主要介紹了
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,分別調用上面的函數進行不同的處理
->
// 如果元素的數值型別(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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: stdthread(3)detach
- 下一篇: stdthread(5)并发atomic