STL
文章平均质量分 64
btwsmile
不积跬步无以至千里
展开
-
剖析STL auto_ptr源码
文件memory中第848行 - 975行是auto_ptr的全部定义,如需查看源码请转看本文末尾的附录。auto_ptr的作用不必多说,它在拷贝构造和赋值操作时的“所有权”转移也被人熟知也不再赘述,本文主要是希望通过剖析STL auto_ptr的源码来透视auto_ptr定义背后的思想。auto_ptr作为比较简单的智能指针,需要处理5种指针行为,接下来我将分别对它们进行阐述。(1)原创 2011-09-25 16:30:14 · 1968 阅读 · 0 评论 -
函数指针vs函数对象
在C/C++中,我们可以将函数当作普通的变量传递给另外一个函数以便定制函数的功能。比如实现排序功能的函数sort(),我们既可以选择从小到大的顺序也可以选择从大到小的顺序,只要传递给sort()不同的比较函数就可以了。不过,C和C++的做法不一样,前者采用函数指针,而后者采用函数对象。相比而言,C++的做法更值得推崇,它在性能上、状态维护上比C的做法灵活很多。性能 对一个整型数原创 2011-11-23 10:50:49 · 2041 阅读 · 0 评论 -
自定义一个简单的迭代器(line_iterator)
STL是容器、迭代器、算法三位一体的好东西,使用STL编写的程序看起来非常简洁。比如从cin输入若干字符串,每一字符串占一行,然后将这些字符串按字典序排序并输出到cout中,相关的代码如下所示:/* 迭代器的使用 * created: btwsmile * date: 2011-12-17 * */#include#include#include#include#includ原创 2011-12-17 15:54:47 · 5150 阅读 · 4 评论 -
理解智能指针(Smart Pointer)
智能指针(smart ponter)是一项十分巧妙的C++编程技术,现在已经发展得相当成熟,运用也相当广泛。你一定对STL中的auto_ptr、shared_ptr毫不陌生,它们就是智能指针的具体实现。本文并不会详解auto_ptr和shared_ptr的语法,你可以在MSDN中轻轻松松查到,本文将主要分析智能指针的意义以及运用auto_ptr和shared_ptr的注意事项。想一想那些没有智原创 2011-09-23 20:20:15 · 2385 阅读 · 0 评论 -
窥探迭代器(iterator)的真相
在前面的文章中,我们曾自定义了一个迭代器类line_iterator,不过它并不具有通用性。现在借助于模板,我们来定义一个模板化的迭代器。仍然延续线性查找的思路,首先将SimpleFind()函数改写成函数模板tFind(),代码如下所示:templateT* tFind(T* start, T* end, T val){ while(start != end && *start原创 2011-12-18 16:16:33 · 2163 阅读 · 0 评论