- 博客(76)
- 资源 (21)
- 收藏
- 关注

原创 简单的程序诠释C++ STL算法系列之十八:transform
前篇我们已经了解了一种区间元素交换swap_ranges函数,现在我们再来学习另外一种区间元素交换transform。该算法用于实行容器元素的变换操作。有如下两个使用原型,一个将迭代器区间[first,last)中元素,执行一元函数对象op操作,交换后的结果放在[result,result+(last-first))区间中。另一个将迭代器区间[first1,last1)的元素*i,依次与[firs
2012-04-29 22:09:48
22810
1

原创 简单的程序诠释C++ STL算法系列之十五:swap
相信大家看到swap这个词都一定不会感到陌生,甚至会有这样想法:这不就是简单的元素交换嘛。的确,swap交换函数是仅次于Hello word这样老得不能老的词,然而,泛型算法东风,这个小小的玩意儿却在C++ STL中散发着无穷的魅力。本文不仅详细地阐述STL泛型算法swap,并借助泛型算法这股东风,展现STL容器中swap成员函数的神奇魅力。注意哦,泛型算法swap和容器中的swap成员函数,这是
2012-03-24 05:41:39
32720
2

原创 简单的程序诠释C++ STL算法系列之十四:copy_backward
前文中展示了copy的魅力,现在我们来看一下它的孪生兄弟copy_backward,copy_backward算法与copy在行为方面相似,只不过它的复制过程与copy背道而驰,其复制过程是从最后的元素开始复制,直到首元素复制出来。也就是说,复制操作是从last-1开始,直到first结束。这些元素也被从后向前复制到目标容器中,从result-1开始,一直复制last-first个元素。举个简单的
2012-03-22 00:44:16
15841
4

原创 简单的程序诠释C++ STL算法系列之十三:copy
前面十二个算法所展现的都属于非变易算法(Non-mutating algorithms)系列,现在我们来看看变易算法。所谓变易算法(Mutating algorithms)就是一组能够修改容器元素数据的模板函数,可进行序列数据的复制,变换等。 我们现在来看看第一个变易算法:元素复制算法copy。该算法主要用于容器之间元素的拷贝,即将迭代器区间[first,last)的元素复制到由复
2012-03-20 23:43:59
23613
6

原创 C++经典书目索引及资源下载
C++经典书目索引: 严重申明 : 本博文未经原作者(jerryjiang)允许,任何人不得转载和抄袭 !Essential C++ 中文版层次:初级导读:《Essential C++中文版》以4个方面来表现C++的本质:procedural(程序性的)、generic(泛型的)、object-based(个别对象的)、object-oriented(面向对
2012-03-15 22:10:07
34982
42

原创 简单的程序诠释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
3
原创 【面试高频问题】一道经典C++网络编程问题的备忘录
近日,在重温C++网络编程相关资料的过程中发现一道经典问题,该问题是关于原始Socket API局限性方面的,笔者分析发现该问题基本上覆盖了面试题目中关于socket的所有知识点,同时也暴露了原始Socket API的某些缺陷。笔者先晒一晒该问题的代码,读者可以先自己找找里面有多少bug,后续本文分享笔者所收集的答案,^_^,开始试试你的“法眼”吧!#include #include c
2012-05-13 18:57:24
7238
4
原创 简单的程序诠释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
2
原创 简单的程序诠释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
原创 纵横中“初品”Boost程序库探秘
一、话说“初品”Boost程序库探秘 C++最新标准C++11的公布,对一直游走在C++98的C++开发者(包括我自己)来说是福音亦是挑战。C++11引入的新特性让C++更具魅力变得更加友好易用,这是福音;但随之而来的语言复杂度的增加,无疑是一种挑战。面对魅力的诱惑和全新的挑战,我们如何从沉迷已久的C++98平滑地过度到C++11呢,罗剑锋老师教了我们一招“杀手锏”:探秘Boost程序
2012-04-28 01:39:45
6937
原创 简单的程序诠释C++ STL算法系列之十六:iter_swap
上文中阐述了元素交换算法swap以及容器中swap成员函数的使用,尤其是通过vector成员函数的交换技巧实现容器内存的收缩,今天,我们要看到的是另一个变易算法,迭代器的交换算法iter_swap,顾名思义,该算法是通过迭代器来完成元素的交换。首先我们来看看函数的原型:函数原型:template void iter_swap( ForwardIterator1 _
2012-03-27 00:20:07
7529
原创 简单的程序诠释C++ STL算法系列之十二:find_end
C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。 find_end算法在一个序列中搜索出最后一个与另一序列匹配的子序列。有如下两个函数原型,在迭代器区间[first1, last1)中搜索出与迭代器区间[first2, last2)元素匹配的子序列,返回首元素的迭
2011-10-12 20:38:07
6603
原创 简单的程序诠释C++ STL算法系列之十一:search_n
C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。 重复元素子序列搜索search_n算法:搜索序列中是否有一系列元素值均为某个给定值的子序列,它有如下两个函数原型,分别在迭代器区间[first, last)上搜索是否有count个连续元素,其值均等于value(或者
2011-10-11 23:24:56
6625
原创 简单的程序诠释C++ STL算法系列之十:search
C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。 search算法函数在一个序列中搜索与另一序列匹配的子序列。它有如下两个原型,在迭代器区间[first1, last1)上找迭代器区间[first2, last2)完全匹配(或者满足二元谓词binary_pred)子
2011-10-10 23:46:52
9816
原创 简单的程序诠释C++ STL算法系列之九:equal
C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。 equal算法类似于mismatch,equal算法也是逐一比较两个序列的元素是否相等,只是equal函数的返回值为bool值true/false,不是返回迭代器值。它有如下两个原型,如果迭代器区间[first1,las
2011-10-10 23:11:16
7579
原创 简单的程序诠释C++ STL算法系列之八:mismatch
C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。 mismatch算法是比较两个序列,找出首个不匹配元素的位置。它有如下两个函数原型,找出迭代器区间[first1, last1) 上第一个元素 *i , 它和迭代器区间[first2, first2 + (last1
2011-10-09 22:01:00
7498
1
原创 简单的程序诠释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
原创 简单的程序诠释C++ STL算法系列之六:count
C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。 count算法用于计算容器中的某个给定值的出现次数。它有两个使用原型,均计算迭代器区间[first, last)上等于value值的元素个数n,区别在于计数n是直接返回还是引用返回。 函数原型:templa
2011-10-07 21:30:36
4111
原创 Beep也疯狂,让你的主板也Happy起来吧
主板能唱歌,而且能根据简谱播放出美妙的旋律,你信吗?不管你信不信,反正我是信啦,^_^。 Windows API 就提供了一个这样奇妙的发音函数,它就是Beep函数。Beep可以通过控制主板扬声器的发声频率和节拍来演奏美妙的旋律,本文根据音乐简谱来演奏几首优美的歌曲,
2011-10-07 14:47:28
12059
7
原创 简单的程序诠释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
原创 简单的程序诠释C++ STL算法系列之四:adjacent_find
C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。 adjacent_find算法用于查找相等或满足条件的邻近元素对。其有两种函数原型:一种在迭代器区间[first , last)上查找两个连续的元素相等时,返回元素对中第一个元素的迭代器位置。另一种是使用二元谓词判断
2011-09-30 22:49:41
7212
原创 简单的程序诠释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
原创 简单的程序诠释C++ STL算法系列之二:find
C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。 find算法用于查找等于某值的元素。它在迭代器区间[first , last)上查找等于value值的元素,如果迭代器iter所指的元素满足 *iter == value ,则返回迭代器iter,未找则返回last。
2011-09-29 00:24:31
4613
1
原创 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
5996
原创 存储过程实现SQL2005查询Access数据库
创建存储过程RemoteJetQuery: CREATEPROCEDURE [dbo].[RemoteJetQuery]@TableOrQueryStringint=1,@Provider_Namenvarchar(30)=N'Microsoft.Jet.
2010-06-05 10:58:00
2139
4
原创 浅谈SQL游标
游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次以行或者多行前进或向后浏览数据的能力。我们可以把游标当作一个指针,它可以指定结果中的任何位置,然后允许用户对指定位置的数据进行处理。游标允许你选择一组数据,通过翻阅这组数据记录——通常被称为数据集,检查每一个游标所在的特定的行。你可以将游标和局部变量组合在一起对每一个记录进行检查,当游标移动到下一个记
2010-03-25 17:00:00
2342
2
原创 SQL Server数据库查询优化50妙计(下篇)
26、MIN()和MAX()能使用到合适的索引。 27、数据库有一个原则是代码离数据越近越好,所以优先选择Default,依次为Rules,Triggers, Constraint(约束如外健主健CheckUNIQUE……,数据类型的最大长度等等都是约束),Procedure.这样不仅维护工作小,编写程序质量高,并且执行的速度快。 28、如果要插入大的二进制值到Ima
2009-11-28 21:12:00
1591
3
原创 图解SQL Server 2000和SQL Server 2005定期自动备份数据库(SQL Server 2005篇)
SQL Server 2005定期自动备份详细图解 SQLServer2005的定期备份是通过创建“维护计划”来实现的。主要有两种方式: 1、维护计划向导。 2、新建维护计划(用户手工创建) 如果想在SQLServer2005中使用维护计划来设计维护备份数据库任务时,有一个前提条件:“SQL Server 代理”服务必须是启用状态
2009-11-22 14:33:00
5142
17
原创 图解SQL Server 2000和SQL Server 2005定期自动备份数据库(SQL Server 2000篇)
SQL Server 2000定期自动备份详细图解企业管理器中的Tools,Database Maintenance Planner,可以设置数据库的定期自动备份计划。并通过启动Sql server Agent来自动运行备份计划。具体步骤如下: 1、打开企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器;2、然后
2009-11-22 14:21:00
3872
4
原创 SQL Server数据库查询优化50妙计(上篇)
优化查询50妙计:(看看哪一计适合您) 1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持。数据量(尺寸)越大,提高I/O越重要. 2、纵向、横向分割表,减少表的尺寸(sp_spaceuse) 3、升级硬件 4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(
2009-11-22 01:01:00
1415
3
原创 SQL SERVER 2005中全新的OUTPUT子句添加数据记录详解(实战篇)
实战篇A. 将 OUTPUT INTO 用于简单 INSERT 语句以下示例将行插入 ScrapReason 表,并使用 OUTPUT 子句将语句的结果返回到 @MyTableVar table 变量。由于 ScrapReasonID 列使用 IDENTITY 属性定义,因此未在 INSERT 语句中为该列指定一个值。但请注意,将在列 INSERTED.ScrapReasonID
2009-11-20 01:14:00
1385
原创 SQL SERVER 2005中全新的OUTPUT子句添加数据记录详解(理论篇)
也许大家在数据库开发的时候,会发现这样一个现象:添加数据记录后想查看其结果都必须通过select表达式来查询实现。一定都要多此一举才可以看到被添加的数据记录吗?答案是否定的。SQL SERVER 2005新提供的OUTPUT子句就帮您解决这个难题,它以比触发器更简洁的方式,在添加数据记录的同时或者事后显示所添加的数据记录内容。下面是作者通过查找帮助文档MSDN和章立民老师的《SQL Server
2009-11-20 00:23:00
2547
原创 用SQL Server 2005 CTE简化查询
SQL Server 2005引进了一个很有价值的新的Transact-SQL语言组件:一个通用表表达式(Common Table Expression,CTE),它是派生表和视图的一个便捷的替代。通过使用CTE,我们可以创建一个命名结果集来在SELECT、INSERT、UPDATE和DELETE语句中引用,而无须保存结果集结构的任何元数据。在本文中,我将阐述如何在SQL Server 20
2009-11-19 01:45:00
4152
原创 使用DATEADD和DATEDIFF来计算SQL Server的DATETIME值
在SQL Server数据库中,DATETIME和SMALLDATETIME值是以整数存储的。然而,与整数不同的是,它们不能直接地进行数学运算。尽管如此,有时候还是需要在日期/时间值中添加或减去一个时间间隔。比如,你可能想在一值上加一些月数或天数,或者甚至可能是小时数。你甚至可能想比较两个日期/时间值以便确定它们之间的时间间隔,如相差的天数或年数。为了简化这些类型的计算,Transact-S
2009-11-19 01:41:00
9187
原创 SQL数据库开发中的一些精典代码
正在加载数据... 1.按姓氏笔画排序: select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as 2.数据库加密: select encrypt(’原始密码’) select pwdencrypt(’原始密码’) select pwdcompare(’原始密码’,’加密后密码’
2009-11-19 01:34:00
1075
2
原创 如何用T-SQL语句来建立启动跟踪
一般我们会用事件探查器来跟踪SQL Server的运行情况,有时我们也需要定时进行一些跟踪,以检查SQL Server在某个时间段内的运行状况,由于事件探查器不支持调度,因此,应该寻找一种方法,适合我们通过设置JOB来启动跟踪,本文介绍的用T-SQL语句来启用跟踪就适合这种需求。 一、用脚本启动并设置跟踪的示例 通过这个示例,你可以了解用脚本进行跟踪所涉及到的存储过程,要了解这些存储
2009-11-19 01:31:00
1099
原创 SQL Server管理常用的SQL和T-SQL
1. 查看数据库的版本 select @@version 常见的几种SQL SERVER打补丁后的版本号: 8.00.194 Microsoft SQL Server 2000 8.00.384 Microsoft SQL Server 2000 SP1 8.00.532 Microsoft SQL Server 2000 SP2 8.00.76
2009-11-19 01:26:00
757
原创 在SQL Server应用中使用OUTPUT子句
现在大多数描述SQL Server 2005新特性的文章都关注于华而不实的特性,如SQLCLR或XML数据类型,而对许多很好的老的T-SQL语言的改进没有得到应有的关注。我曾经从许多DBA口中听到令他们更兴奋的是看到T-SQL语言的改进,而不是那些新出现和发布的功能。对于SQL语言的一个很有用的实际改进是OUTPUT子句,它允许查询一个数据修改命令所影响的记录行。 本文将讨论OUTPUT子
2009-11-19 01:18:00
1631
原创 T-SQL实现数据结构中的冒泡算法和快速排序
交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。 应用交换排序基本思想的主要排序方法有:冒泡排序和快速排序。 一、下面我们来认识一下此方法在T-SQL中的实际使用: declare @date datetime declare @endDate datetime declare @
2009-11-19 01:16:00
1916
More Effective C++中文版
2012-03-15
Essential C++ 中文版
2012-03-15
Exceptional C++ Style中文版
2012-03-15
Exceptional C++中文版
2012-03-15
C++ 编程思想
2012-03-15
设计模式精解-GoF 23种设计模式解析附C++实现源码
2011-09-17
2009年必会的十大SQL Server 开发技巧
2009-07-27
C语言程序设计题典和常见算法150例
2009-07-25
SQL SERVER参考手册
2009-07-24
ASP.NET完全入门经典
2009-07-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人