摘要:
目录(?)[+]之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。好了,进入正题………首先,为了在我们的程序中使用string类型,我们必须包含头文件 <string>。如下: #include <string> //注意这里不是string.h string.h是C字符串头文件1.声明 阅读全文
摘要:
操作符的重载有一些规则:1. 重载操作符必须具有一个类类型或枚举类型操作数。这条规则强制重载操作符不能重新定义用于内置类型对象的操作符的含义。 如: int operator+(int, int), 不可以2. 为类设计重载操作符的时候,必须选择是将操作符设置为类成员还是普通非成员函数。在某些情况下,程序没有选择,操作符必须是成员;在另外一些情况下,有些经验可以指导我们做出决定。下面是一些指导: a. 赋值(=),下标([]),调用(())和成员访问箭头(->)等操作符必须定义为成员,将这些操作符定义为非成员函数将在编译时标记为错误。 b. 像赋值一样,复合赋值操作符通常应定义为类的成员 阅读全文
摘要:
bitmap是一个十分有用的结构。所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。适用范围:可进行数据的快速查找,判重,删除,一般来说数据范围是int的10倍以下基本原理及要点:使用bit数组来表示某些元素是否存在,比如8位电话号码扩展:bloom filter可以看做是对bit-map的扩展问题实例:1)已知某个文件内包含一些电话号码,每个号码为8位数字,统计不同号码的个数。8位最多99 999 999,大概需要99m个bit,大概10几m字节的内存即可。2)2.5亿个整数中找出. 阅读全文
摘要:
首先给五个题目:1.给定一个有序(不降序)的数组a[],求任意一个index使得a[index]==k,不存在则返回0.2.给定一个有序(不降序)的数组a[],求最小的index使得a[index]==k,不存在则返回0.3.给定 一个有序(不降序)的数组a[],求最大的index使得a[index]==k,不存在则返回0.4.给定一个有序(不降序)的数组a[],求最大的index使得a[index]小于k,不存在则返回0.5.给定一个有序(不降序)的数组a[],求最小的index使得a[index]大于k,不存在则返回0. 因为数组中的元素有序,因此我们采用时间复杂度较低的二分查找来做,典型 阅读全文
摘要:
一、 卡特兰数1、卡特兰数是满足下列递归式的数字: h(n)=h(0)h(n-1)+h(1)h(n-2)+h(2)h(n-3)+…+h(i)h(n-i-1)+…+h(n-1)h(0)(n>=2)且,h(0)=1,h(1)=12、另一个递归式 h(n)=((4*n-2)/(n+1))*h(n-1) 它的解是:h(n)=C(2n,n)/(n+1)(n=1,2,3,…)二、 卡特兰数的应用1、 括号化问题P=a1*a2*a3*…*an,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,试问有几种括号化的方法。解:设P(n)表示n个元素括号化的数目。如果a1前的左括号和ai后的右括号相匹配, 阅读全文