最近在看读《STL源码剖析》,看到Traits编程技法这节时,不禁感慨STL源码作者的创新能力。那么什么是Traits编程技法呢?且听我娓娓道来:
我们知道容器的许多操作都是通过迭代器展开的。其中容器类似于数组,迭代器类似于指针。我们用数组来写个例子:1 int arr[5] = {1,2,3...
分类:
其他好文 时间:
2014-04-29 18:15:15
阅读次数:
463
1、宏定义swap,加括号有什么意义 #define swap(x,y) x =
(x)+(y);y=(x)-(y);x=(x)-(y)
加括号是为了处理表达式参数(即宏的参数可能是个算法表达式)时不出错,因为宏替换就是文本替换,所以如果有以下情况: #define COM(A,B)
(A)*(B)...
分类:
其他好文 时间:
2014-04-29 17:47:29
阅读次数:
585
构造函数不能是虚函数。但有时候确实需要能传递一个指向基类对象的指针,并且有已创建的派生类对象的拷贝。通常在类内部创建一个Clone()方法,并设置为虚函数。//Listing
12.11 Virtual copy constructor#include using namespace std;cla...
分类:
编程语言 时间:
2014-04-29 17:26:52
阅读次数:
522
聚合数据类型能够同时存储超过一个的单独数据。
c语言提供了数组和结构体。1.1234567891011121314#include #include void main(){struct {int
a;}x,*b;int c[2]={1,2};x.a=1;b=c;printf("%d \n",b[1...
分类:
其他好文 时间:
2014-04-29 17:05:12
阅读次数:
395
不完整声明1234567891011121314151617181920212223242526/*
方法一 */struct tag_a{struct tag_b *bp; /* 这里struct tag_b 还没有定义,但编译器可以接受 */int
value;};struct tag_b{st...
分类:
其他好文 时间:
2014-04-29 16:54:53
阅读次数:
366
2014-04-28 23:35题目:最大子数组和问题。解法:O(n)解法。代码: 1 //
17.8 Find the consecutive subarray with maximum sum in an array. 2 // O(n)
online algorithm. 3 #include...
分类:
其他好文 时间:
2014-04-29 16:35:28
阅读次数:
429
2014-04-28
22:49题目:给定一个整数数组。如果你将其中一个子数组排序,那么整个数组都变得有序。找出所有这样子数组里最短的一个。解法:线性时间,常数空间内可以解决,思想类似于动态规划。通过正反扫描两次,可以得出这个区间的两端。只要存在i
a[j],那么这个区间[i, j]就必须被排序,....
分类:
其他好文 时间:
2014-04-29 16:11:53
阅读次数:
408
字符数组是C语言中最常用的数组类型。下面我们通过编写一个程序,来说明字符数组以反操作字符数组的函数的用法。该程序读入一组文本行,并把最长的文水行打印出来。该算法的基本框架非常简单:
while (还有未处理的行) i f (该行比已处理的最长行还要长) 保存该行 保存该行的长度 打印最长的...
分类:
编程语言 时间:
2014-04-29 15:50:20
阅读次数:
506
比如对于数组[1,-2,3,5,-1,2] 最大子数组和是sum[3,5,-1,2] = 9,
我们要求函数输出子数组和的最大值,并且返回子数组的左右边界(下面函数的left和right参数).本文我们规定当数组中所有数都小于0时,返回数组中最大的数(也可以规定返回0,只要让以下代码中maxsum初...
分类:
其他好文 时间:
2014-04-29 15:32:49
阅读次数:
554
2014-04-29
00:04题目:给定一个整数数组,找出所有加起来为指定和的数对。解法1:可以用哈希表保存数组元素,做到O(n)时间的算法。代码: 1 // 17.12
Given an array of integers and target value, find all pairs in ...
分类:
其他好文 时间:
2014-04-29 15:08:13
阅读次数:
469