
STL
yuanweihuayan
准备研究发布windows内核相关文章
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
swap_ranges详解
swap_ranges:交换两个区间的元素,如果两个区间是容器的所有元素.应该使用swap. //TEMPLATE FUNCTION swap_rangestemplateclass_FwdIt1, class_FwdIt2> inline _FwdIt2 _Swap_ranges(_FwdIt1 _First1,_FwdIt原创 2012-05-10 22:10:02 · 1712 阅读 · 0 评论 -
rotate/rotate_copy详解
旋转元素次序:rotate源码:templateclass _RanIt,class _Diff,class _Ty> inlinevoid _Rotate(_RanIt _First, _RanIt _Mid, _RanIt _Last, _Diff *, _Ty *){ // rotate [_First, _Last), random-access iterators原创 2012-05-27 16:12:20 · 1413 阅读 · 0 评论 -
partition/stable_partition详解
Partition:将满足条件的元素向前移动.// TEMPLATE FUNCTION partitiontemplateclass _BidIt,class _Pr> inline_BidIt _Partition(_BidIt _First, _BidIt _Last, _Pr _Pred){ // move elements satisfying _Pred to beg原创 2012-05-27 16:14:33 · 3287 阅读 · 1 评论 -
random_shuffle
Random_shuffle:随机打乱容器. // TEMPLATE FUNCTION random_shuffletemplate<class _RanIt, class _Diff> inline void _Random_shuffle(_RanIt _First, _RanIt _Last, _Diff *) { // shuffle [_First, _Last)原创 2012-05-27 16:13:13 · 2337 阅读 · 0 评论 -
next_permutation/prev_permutation详解
Next_permutation:按照升序全排列源码:// TEMPLATE FUNCTION next_permutationtemplateclass _BidIt> inlinebool _Next_permutation(_BidIt _First, _BidIt _Last){ // permute and test for pure ascending, using原创 2012-05-27 16:11:49 · 1160 阅读 · 0 评论 -
lexicographical_compare详解
lexicographical_compare函数功能:按照字典顺序比较前一区间是否小于后一区间.templateclass _InIt1, class _InTy, size_t _InSize, class _Pr> inline bool equal(_InIt1 _First1, _InIt1 _Las原创 2012-05-08 22:59:21 · 1959 阅读 · 0 评论 -
copy/copy_backward
copy:将源区间中的所有元素复制到dest为起点中去.templateclass _InIt, class _OutIt> inline _OutIt copy(_InIt _First, _InIt _Last, _OutIt _Dest) { // copy [_First原创 2012-05-08 23:00:57 · 1401 阅读 · 0 评论 -
mismatch详解
mismatch:搜寻两区间第一处不同点.templateclass _InIt1, class _InIt2> inline pair mismatch(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2)原创 2012-05-08 22:57:41 · 3195 阅读 · 0 评论 -
generate详解
generate:将区间[beg,end)赋值为fun返回值 //TEMPLATE FUNCTION generate_ntemplateclass _OutIt, class_Diff, class_Fn0> inline void_Generate_n(_OutIt _Dest, _Diff _原创 2012-05-10 22:10:53 · 2417 阅读 · 0 评论 -
C++ 标准程序库(二)
13.各种容器总结:1). vector操作:■ vector的删除与安插元素性能: ◆ 在容器尾部安插或者移除元素 ◆ 容量一开始就够大◆ 安插多个元素时,调用一次比调用多次来的快■ C++对vector函数调用异常保证: ◆ 如果push_back安插时发生异常,该函数不起作用 ◆ 如原创 2012-04-11 23:04:44 · 992 阅读 · 0 评论 -
replace/replace_if详解
replace:替换指定值的元素 //TEMPLATE FUNCTION replacetemplateclass _FwdIt, class_Ty> inline void_Replace(_FwdIt _First, _FwdIt _Last, const_Ty& _原创 2012-05-12 21:45:58 · 1828 阅读 · 0 评论 -
关于vector删除某一些特定的值的使用方法和出错的问题详解.
关于erase,我的理解就是:删除指定的元素,然后把刚刚删除的元素其后面所有元素往前移.然后改变end指针.使其往前移动一位.最重要的是,当前的迭代器不动(但是由于元素往前移了,所以它指向了原始状态的下一个元素).比如我有一个vector,vector的元素分别是0,1,2,3,4;如果我想删除元素值为3的元素.那么当我使用erase后,它的内存元素分别为0(begin),1,2,4(en原创 2014-05-03 17:36:06 · 3554 阅读 · 0 评论 -
unique_copy/unique_copy_if详解
unique_copy:在unique的基础上,不改变源容器,并将得到的结果复制给_Dest.templateclass _FwdIt, class_OutIt, class_Pr> inline _OutIt _Unique_copy(_FwdIt _First,_FwdIt _Last,原创 2012-05-14 22:28:20 · 1029 阅读 · 0 评论 -
remove_copy/remove_copy_if详解
remove_copy:移除值为value的元素,并将处理后在容器复制到另一容器里.源码: // TEMPLATE FUNCTION remove_copytemplateclass _InIt, class _OutIt, class _Ty> inline _OutIt _Remov原创 2012-05-14 22:26:46 · 2891 阅读 · 0 评论 -
reverse/reverse_copy详解
reverse:逆转元素次序 //TEMPLATE FUNCTION reversetemplateclass_BidIt>inline void_Reverse(_BidIt _First, _BidIt _Last, bidirectional_iterator_tag) { // reverse e原创 2012-05-14 22:28:56 · 1355 阅读 · 0 评论 -
unique详解
unique:移除连续重复元素的多余元素 // TEMPLATEFUNCTION uniquetemplateclass_FwdIt>inline _FwdIt _Unique(_FwdIt _First, _FwdIt_Last) { // remove each matching previous原创 2012-05-14 22:27:48 · 1707 阅读 · 0 评论 -
fill详解
fill:将区间[beg,end)赋新值 // TEMPLATEFUNCTION filltemplateclass _FwdIt, class_Ty> inline void_Fill(_FwdIt _First, _FwdIt _Last,const_Ty& _Val) { // copy原创 2012-05-10 22:10:28 · 1520 阅读 · 0 评论 -
transform详解
transform:形式一:transform(begSrc,endSrc,begDest,Fun)函数功能:对[begSrc,endSrc)运用Fun操作,并将返回值赋值给begDest.其中Fun的形式为:T (Fun*)(T)这里需要注意begDest需要的区间要求是最少大于distance[begSrc,endSrc).否则将会引起覆盖.templateclass _I原创 2012-05-10 22:09:26 · 1972 阅读 · 0 评论 -
replace_copy/replace_copy_if
replace_copy:这个函数和replace对应,唯一不同的是,它将得到的结果存在另一个容器里面 // TEMPLATEFUNCTION replace_copytemplateclass _InIt, class_OutIt, class_Ty> inline _OutIt _Replace_copy(原创 2012-05-12 21:46:55 · 1379 阅读 · 0 评论 -
算法库(六)
14. generate:将(仿)函数得到的值赋值给输入范围的各个元素.generate_n:将(仿)函数得到的值赋值给first-first+n的各个元素class IntSequence{private: intvalue;public: IntSequence( intinitialValue ):value( init原创 2012-04-23 21:58:09 · 976 阅读 · 0 评论 -
算法库(五)
13. lexicographical_compare:按字典顺序比较class _functorTest{public: enumcpm_enum{ normal_cpm,nonormal_cpm }; _functorTest(cpm_enum param =nonormal_cpm ):_cValue( param ){}原创 2012-04-23 21:57:24 · 963 阅读 · 0 评论 -
迭代器特性
首先在读>这本书的迭代器特性这一节很迷茫.不知所云.后来看到一篇类似的文章.是参考这本书的.但是有一些很好的注释.正是这些注释,才使得我有种恍然大悟的感觉.原文请见:http://www.codeproject.com/KB/stl/Iterator_traits.aspx简介如果去查字典,特性就是特点/属性的意思。C++中也不例外,本文中的迭代器特性,指的就是C++ Iterat转载 2012-04-21 21:44:06 · 1401 阅读 · 0 评论 -
算法库的使用细节
算法库在使用的时候,有时不用关心其具体实现,有时却不得不关心.不用关心,有find等.(说不关心细节,并不是说连其功能都可不晓.而是说其内部的实现.如果我们使用这个函数时,无需过多深入).然而,算法库还有一些函数,如果你不知晓其内部实现的原理,只是知道它的功能,在使用上可能就达不到预期的目的.这类的函数有:remove_if等.还是举例说明吧!例子一:class Int_Exa原创 2012-04-27 15:01:51 · 1682 阅读 · 0 评论 -
算法库(三)
1. for_each(beg,end,f ):按照f方式遍历区间2. transform(beg,end,dest,f ):按照f方式遍历区间,将得到的结果写入dest中void print( string strvlaue ){ cout"\n";}stringoperatorString( string strValue ){原创 2012-04-12 22:59:41 · 893 阅读 · 0 评论 -
C++标准程序库(一)
1. 如果要把一个template中的某个标识符号指定为一种型别,就算意图显而易见,关键字typename也不可或缺,因此一般的规则是,除了以typename修饰之外,template内的任何标识符号都被视为一个值而非一个型别.2. 类的成员函数可以是个template,但这样的成员函数既不能是virtual也不能有缺省参数.3. 如果程序允许我们为成员函数提供不同的template型别,原创 2012-04-07 12:40:42 · 1417 阅读 · 0 评论 -
算法库(二)
1. remove:删除区间指定的值的元素.(这里并不缩小区间大小)2. distance:计算区间元素的个数(对非顺序容器)listint> int_lst; for ( int i = 0;i { int_lst.push_back( i );原创 2012-04-12 22:58:51 · 992 阅读 · 0 评论 -
算法库(四)
1. find_if:查找满足某个条件的元素templatetypenameT>struct compareMap{ compareMap( T _strValue):m_strValue(_strValue){} bool operator()( pairint,T>_mapValue ) {原创 2012-04-12 23:00:36 · 1031 阅读 · 0 评论 -
算法库(一)
1. max_element:返回键值最大的元素2. min_element: 返回键值最小的元素3. sort:以升序排序4. copy:复制元素5. reverse:反转元素6. find:查找元素class TestClass{public: //co原创 2012-04-12 22:11:55 · 1459 阅读 · 0 评论 -
关于vector的erase问题处理
Vector的erase成员函数有许多容易导致问题的情况.其中以迭代器失效问题最为常见.关于迭代器的失效问题,以及erase如何删除vector中指定值(可能不止一个),我曾今也对erase的使用情况和内容结合起来写过一些字.博文地址:http://blog.youkuaiyun.com/yuanweihuayan/article/details/6790516似乎对于删除的解析已经够全面了.可是原创 2012-02-13 16:26:07 · 3578 阅读 · 1 评论 -
STL的find_if函数
有时我们要在map、vector容器中查找符合条件的记录,map提供一个find的成员函数,但也仅限于查找关键字满足条件的记录,不支持值域的比较。如果我们要在值域中查找记录,该函数就无能无力了。而vector甚至连这样的成员函数都没有提供。所以一般情况下进行值域的查找,要么自己遍历数据,要么求助于STL的find_if函数。前种方法我们这里就不赘述了,只讲find_if函数。1 -- find转载 2011-10-28 16:17:53 · 1768 阅读 · 0 评论 -
配接器compose_f_gx,compose_f_gx_hy实现实例
源码:templateclass compose_f_gx_hy_t :public binary_function<typename OP2::argument_type, typename OP3::argument_type, typename OP1::result_type>{private: OP1 op1; OP2 op2; OP3 op3;public: c原创 2012-05-01 21:12:18 · 2278 阅读 · 0 评论 -
for_each详解
说明:在使用STL算法库的过程中,如果单单就某个函数做一些使用,而不了解其内部的实现原理,在使用过程中将会存在大量的"问题",因此,在最近这段时间里,我将对每个函数深入挖掘定义(vs2010 stl版本)函数功能:对区间[beg,end)执行_Fn1.并返回_Fn1.templateclass _InIt, class_Fn1> inline原创 2012-05-02 22:08:10 · 1449 阅读 · 0 评论 -
find_end详解
函数功能:查找在父序列中最后匹配的子序列.find_end这个函数比较特殊一点,说起特殊并不是指其功能的特殊,而是其命名的特殊.我们知道find系列算法是查找指定值的函数(单个值),而search系列则是查找”子系列”算法.但是Nicolai M.Josuttis在书里面也介绍到了原因:它说是因为这些算法并非早起STL的部分.这可能就是需要C++标准委员会商榷的一部分了.但是话又说回来,如果按原创 2012-05-06 22:24:47 · 3640 阅读 · 0 评论 -
equal详解
equal:判断[_First1,_Last1)与[_First2,...)开头区间的元素是否相等.templateclass _InIt1, class_InIt2> inline boolequal(_InIt1 _First1, _InIt1 _Last1, _InIt2 _First2)原创 2012-05-07 22:41:41 · 1798 阅读 · 0 评论 -
adjacen_find详解
adjacen_find:搜索给定区间中两个连续相等的元素这个函数也以重载的形式给出了这两个函数.一个是默认的关系运算(==),一个是仿函数//TEMPLATE FUNCTION adjacent_findtemplateclass_FwdIt>inline _FwdIt _Adjacent_find(_FwdIt _First,_FwdIt _Last)原创 2012-05-07 22:11:36 · 1038 阅读 · 0 评论 -
find_first_of详解
find_first_of函数和其他函数类似,提供了两个函数,一个支持仿函数,一个内置关系运算符(以默认的函数功能:返回第一个既在_First1-_Last1中,又在_First2-_Last2中元素的位置(第一个范围). //TEMPLATE FUNCTION find_first_oftemplateclass_FwdIt1,原创 2012-05-07 21:48:13 · 2601 阅读 · 0 评论 -
search详解
search算法: //TEMPLATE FUNCTION searchtemplateclass_FwdIt1, class_FwdIt2, class_Diff1, class_Diff2> inline _FwdIt1 _Search(_FwdIt1 _First1原创 2012-05-05 08:42:17 · 1737 阅读 · 0 评论 -
max_element/min_element详解
max_element/min_element:max_element算法:templateclass_FwdIt>inline _FwdIt _Max_element(_FwdIt _First,_FwdIt _Last) { // find largest element, using operator _Fw原创 2012-05-05 08:41:35 · 1694 阅读 · 1 评论 -
find/find_if详解
find/find_if:函数功能:返回元素值为_Val的迭代器templateclass _InIt, class_Ty> inline _InIt find(_InIt _First, _InIt _Last, const _Ty& _Val) { // find first matching _Val原创 2012-05-05 08:40:39 · 1713 阅读 · 0 评论 -
count与count_if详解
声明:以后所有函数的讨论和前面一样,都是在vs2010基础上.count有两个功能相似的函数:一个是本身另一个是count_if首先是count:函数功能:返回区间取值为_Val的元素个数.templateclass _InIt, class_Ty> inline typenameiterator_traits::difference_t原创 2012-05-02 22:40:20 · 1989 阅读 · 1 评论