
C++ STL
文章平均质量分 82
小坏猪猪
自信开朗,微笑地活在独立的今天
展开
-
C++经典书目索引及资源下载
C++经典书目索引: 严重申明 : 本博文未经原作者(jerryjiang)允许,任何人不得转载和抄袭 !Essential C++ 中文版层次:初级导读:《Essential C++中文版》以4个方面来表现C++的本质:procedural(程序性的)、generic(泛型的)、object-based(个别对象的)、object-oriented(面向对原创 2012-03-15 22:10:07 · 34986 阅读 · 131 评论 -
简单的程序诠释C++ STL算法系列之三:find_if
C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。 find_if算法 是find的一个谓词判断版本,它利用返回布尔值的谓词判断pred,检查迭代器区间[first, last)上的每一个元素,如果迭代器iter满足pred(*iter) == true,表示找到元素并原创 2011-09-29 22:39:59 · 5811 阅读 · 0 评论 -
简单的程序诠释C++ STL算法系列之二:find
C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。 find算法用于查找等于某值的元素。它在迭代器区间[first , last)上查找等于value值的元素,如果迭代器iter所指的元素满足 *iter == value ,则返回迭代器iter,未找则返回last。原创 2011-09-29 00:24:31 · 4614 阅读 · 2 评论 -
简单的程序诠释C++ STL算法系列之一:for_each
C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。 for_each用于逐个遍历容器元素,它对迭代器区间[first,last)所指的每一个元素,执行由单参数函数对象f所定义的操作。 原型:template Function for_each(原创 2011-09-27 20:24:18 · 20166 阅读 · 6 评论 -
size_type、size_t、different_type以及ptrdiff_t
size_type 在标准库string类型中,最容易令人产生误解就是size()成员函数的返回值了,如果不深入分析的话,大多人都会认为size()的返回值为int类型,其实不然。事实上,size操作返回的是string::size_type类型的值。 那怎样理解size_type这一类型呢,我引用《C++ Primer》一段原文简单解释一下: string类类型和许多其他原创 2011-08-20 23:41:53 · 5997 阅读 · 4 评论 -
简单的程序诠释C++ STL算法系列之十三:copy
前面十二个算法所展现的都属于非变易算法(Non-mutating algorithms)系列,现在我们来看看变易算法。所谓变易算法(Mutating algorithms)就是一组能够修改容器元素数据的模板函数,可进行序列数据的复制,变换等。 我们现在来看看第一个变易算法:元素复制算法copy。该算法主要用于容器之间元素的拷贝,即将迭代器区间[first,last)的元素复制到由复原创 2012-03-20 23:43:59 · 23613 阅读 · 10 评论 -
简单的程序诠释C++ STL算法系列之十八:transform
前篇我们已经了解了一种区间元素交换swap_ranges函数,现在我们再来学习另外一种区间元素交换transform。该算法用于实行容器元素的变换操作。有如下两个使用原型,一个将迭代器区间[first,last)中元素,执行一元函数对象op操作,交换后的结果放在[result,result+(last-first))区间中。另一个将迭代器区间[first1,last1)的元素*i,依次与[firs原创 2012-04-29 22:09:48 · 22812 阅读 · 2 评论 -
简单的程序诠释C++ STL算法系列之十九:replace
替换算法将指定元素值替换为新值,使用原型如下,将迭代器[first,last)中值为old_value的元素全部替换为new_value值。 函数原型:template void replace ( ForwardIterator first, ForwardIterator last, const T& old_value, const T&原创 2012-04-29 22:14:34 · 5653 阅读 · 3 评论 -
简单的程序诠释C++ STL算法系列之十七:swap_ranges
前面我们已经熟悉了swap和iter_swap,接下来我们来看看区间元素交换算法:swap_ranges,该算法用于进行两个迭代器区间元素的交换。它的使用原形如下,将迭代器区间[first1,last1)的元素,与迭代器区间[first2,first2+(last1-first1))迭代器区间元素交换其中*first1和*first2交换、*(first+1)和*(first2+1)交换、...*原创 2012-04-29 21:59:23 · 4491 阅读 · 0 评论 -
纵横中“初品”Boost程序库探秘
一、话说“初品”Boost程序库探秘 C++最新标准C++11的公布,对一直游走在C++98的C++开发者(包括我自己)来说是福音亦是挑战。C++11引入的新特性让C++更具魅力变得更加友好易用,这是福音;但随之而来的语言复杂度的增加,无疑是一种挑战。面对魅力的诱惑和全新的挑战,我们如何从沉迷已久的C++98平滑地过度到C++11呢,罗剑锋老师教了我们一招“杀手锏”:探秘Boost程序原创 2012-04-28 01:39:45 · 6938 阅读 · 0 评论 -
简单的程序诠释C++ STL算法系列之四:adjacent_find
C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。 adjacent_find算法用于查找相等或满足条件的邻近元素对。其有两种函数原型:一种在迭代器区间[first , last)上查找两个连续的元素相等时,返回元素对中第一个元素的迭代器位置。另一种是使用二元谓词判断原创 2011-09-30 22:49:41 · 7213 阅读 · 0 评论 -
简单的程序诠释C++ STL算法系列之五:find_first_of
C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。 find_first_of算法用于查找位于某个范围之内的元素。它有两个使用原型,均在迭代器区间[first1, last1)上查找元素*i,使得迭代器区间[first2, last2)有某个元素*j,满足*i =原创 2011-10-02 14:40:46 · 9983 阅读 · 0 评论 -
简单的程序诠释C++ STL算法系列之十四:copy_backward
前文中展示了copy的魅力,现在我们来看一下它的孪生兄弟copy_backward,copy_backward算法与copy在行为方面相似,只不过它的复制过程与copy背道而驰,其复制过程是从最后的元素开始复制,直到首元素复制出来。也就是说,复制操作是从last-1开始,直到first结束。这些元素也被从后向前复制到目标容器中,从result-1开始,一直复制last-first个元素。举个简单的原创 2012-03-22 00:44:16 · 15843 阅读 · 8 评论 -
简单的程序诠释C++ STL算法系列之十五:swap
相信大家看到swap这个词都一定不会感到陌生,甚至会有这样想法:这不就是简单的元素交换嘛。的确,swap交换函数是仅次于Hello word这样老得不能老的词,然而,泛型算法东风,这个小小的玩意儿却在C++ STL中散发着无穷的魅力。本文不仅详细地阐述STL泛型算法swap,并借助泛型算法这股东风,展现STL容器中swap成员函数的神奇魅力。注意哦,泛型算法swap和容器中的swap成员函数,这是原创 2012-03-24 05:41:39 · 32723 阅读 · 2 评论 -
简单的程序诠释C++ STL算法系列之十六:iter_swap
上文中阐述了元素交换算法swap以及容器中swap成员函数的使用,尤其是通过vector成员函数的交换技巧实现容器内存的收缩,今天,我们要看到的是另一个变易算法,迭代器的交换算法iter_swap,顾名思义,该算法是通过迭代器来完成元素的交换。首先我们来看看函数的原型:函数原型:template void iter_swap( ForwardIterator1 _原创 2012-03-27 00:20:07 · 7529 阅读 · 1 评论 -
简单的程序诠释C++ STL算法系列之九:equal
C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。 equal算法类似于mismatch,equal算法也是逐一比较两个序列的元素是否相等,只是equal函数的返回值为bool值true/false,不是返回迭代器值。它有如下两个原型,如果迭代器区间[first1,las原创 2011-10-10 23:11:16 · 7579 阅读 · 2 评论 -
简单的程序诠释C++ STL算法系列之七:count_if
C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。 count_if算法是使用谓词判断pred统计迭代器区间[first , last) 上满足条件的元素个数n,按计数n是否引用返回,有如下两种函数原型:函数原型:template typename it原创 2011-10-09 20:58:07 · 8907 阅读 · 0 评论 -
简单的程序诠释C++ STL算法系列之十二:find_end
C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。 find_end算法在一个序列中搜索出最后一个与另一序列匹配的子序列。有如下两个函数原型,在迭代器区间[first1, last1)中搜索出与迭代器区间[first2, last2)元素匹配的子序列,返回首元素的迭原创 2011-10-12 20:38:07 · 6604 阅读 · 2 评论 -
简单的程序诠释C++ STL算法系列之十一:search_n
C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。 重复元素子序列搜索search_n算法:搜索序列中是否有一系列元素值均为某个给定值的子序列,它有如下两个函数原型,分别在迭代器区间[first, last)上搜索是否有count个连续元素,其值均等于value(或者原创 2011-10-11 23:24:56 · 6626 阅读 · 3 评论 -
简单的程序诠释C++ STL算法系列之十:search
C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。 search算法函数在一个序列中搜索与另一序列匹配的子序列。它有如下两个原型,在迭代器区间[first1, last1)上找迭代器区间[first2, last2)完全匹配(或者满足二元谓词binary_pred)子原创 2011-10-10 23:46:52 · 9818 阅读 · 0 评论 -
简单的程序诠释C++ STL算法系列之六:count
C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。 count算法用于计算容器中的某个给定值的出现次数。它有两个使用原型,均计算迭代器区间[first, last)上等于value值的元素个数n,区别在于计数n是直接返回还是引用返回。 函数原型:templa原创 2011-10-07 21:30:36 · 4112 阅读 · 0 评论 -
简单的程序诠释C++ STL算法系列之八:mismatch
C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。 mismatch算法是比较两个序列,找出首个不匹配元素的位置。它有如下两个函数原型,找出迭代器区间[first1, last1) 上第一个元素 *i , 它和迭代器区间[first2, first2 + (last1原创 2011-10-09 22:01:00 · 7499 阅读 · 3 评论