STL—对象的构造与析构
2018-06-17 22:14:36来源:未知 阅读 ()
对象的构造、析构
template <typename T1, typename T2> inline void construct(T1 *p, const T2& value) { //定位new new (p) T1(value); }
//destroy()第一版本,接受一个指针 template <typename T> inline void destroy(T* point) { point->~T(); }
//有trivial destructor template <typename Iterator> inline void __destroy_aux(Iterator first, Iterator last, __true_type) {} //有non-trivial destructor template <typename Iterator> inline void __destroy_aux(Iterator first, Iterator last, __false_type) { for (; first < last; first++) destroy(&*first); //调用第一版本destroy() } //判断元素的值类型是否有trivial destructor template <typename Iterator, typename T> inline void __destroy(Iterator first, Iterator last, T* ) { typedef typename __type_traits<T>::has_trivial_destructor trivial_destructor; __destroy_aux(first, last, trivial_destructor()); } //destroy()第二版本,接受两个迭代器 template <typename Iterator> inline void destroy(Iterator first, Iterator last) { __destroy(first, last, value_type(first)); }
//返回迭代器指向的对象类型 value_type* template <typename Iterator> inline typename iterator_traits<Iterator>::value_type* value_type(const Iterator&) { return static_cast<typename iterator_traits<Iterator>::value_type*>(NULL); }
//iterator traits template <typename Iterator> struct iterator_traits { typedef typename Iterator::iterator_category iterator_category; typedef typename Iterator::value_type value_type; typedef typename Iterator::difference_type difference_type; typedef typename Iterator::pointer pointer; typedef typename Iterator::reference reference; };
(全文完)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:P1726 上白泽慧音
下一篇:指针的使用
- C++ 对象的初始化和赋值 2020-06-03
- C++ 析构函数 2020-06-03
- C++ 构造函数 2020-06-03
- C++仿函数 2020-05-16
- STL之list 2020-04-30
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash