代码改变世界

随笔分类 -  C++相关

字符串处理时刻提醒自己要在末尾手动加'\0'

2015-08-21 11:36 by itwolf, 1671 阅读, 收藏,
摘要: 话不多说,大家都明白字符串是以'\0'为结尾的,但偏偏今天编程序的时候忘了添加'\0'了,结果浪费时间调试一番才发现,囧死了。先通过一段代码看看,忘记加'\0'会造成哪些难以发现的麻烦吧 1 #include 2 #include 3 using namespace std; 4 int main(... 阅读全文

排序算法总结

2015-08-19 20:11 by itwolf, 299 阅读, 收藏,
摘要: 关于各种排序算法的总结表格,这里偷个懒直接用Simple life的博客http://blog.csdn.net/whuslei/article/details/6442755中的图片了下面是自己写的各种排序的程序: 1 #include 2 using namespace std; 3 ... 阅读全文

VS2010中如果忘记函数所在的头文件或者忘记函数的输入输出参数类型怎么办?

2015-07-23 15:44 by itwolf, 467 阅读, 收藏,
摘要: 先随便找一个熟悉的函数,右击-转到定义,然后写出目标函数,右击-转到定义 阅读全文

经典算法学习之回溯法

2015-05-17 22:28 by itwolf, 1482 阅读, 收藏,
摘要: 回溯法的应用范围:只要能把待求解的问题分成不太多的步骤,每个步骤又只有不太多的选择就可以考虑使用回溯法。若用回溯法求问题的所有解时,要回溯到根,且根结点的所有可行的子树都要已被搜索遍才结束。 而若使用回溯法求任一个解时,只要搜索到问题的一个解就可以结束。回溯法将问题的候选解按照某一顺序逐一枚举和检验... 阅读全文

经典算法学习之分治法(以排列、组合程序为例)

2015-05-07 09:16 by itwolf, 6061 阅读, 收藏,
摘要: 分治法的思想:将原问题分解为几个规模较小但类似于原问题的子问题,递归的求解这些子问题,然后再合并这些子问题的解来建立原问题的解。分治法在每层递归是遵循的三个步骤:(1)分解原问题为若干个子问题,这些子问题是原问题的规模较小的实例。(2)解决这些子问题,队规的求解各个子问题,当子问题规模足够小的时候,... 阅读全文

使用数字进行字符遍历

2015-04-23 22:26 by itwolf, 1031 阅读, 收藏,
摘要: 有些时候使用数字进行遍历,然后将数字转化成需要的进制数,再将进制数对应成需要的字符是一种非常有效的方法。如:输入一个正整数X,在下面的等式左边的数字之间添加+号或者-号,使得等式成立。1 2 3 4 5 6 7 8 9 = X比如:12-34+5-67+89 = 51+23+4-5+6-7-8-9 ... 阅读全文

注意:C++中double的表示是有误差的

2015-04-23 14:41 by itwolf, 1659 阅读, 收藏,
摘要: 注意:C++中double的表示是有误差的,直接通过下面的例子看一下 1 #include 2 using namespace std; 3 int main() 4 { 5 double i; 6 for(i=0;i!=10;i+=0.2) 7 { 8 co... 阅读全文

字符串处理技巧

2015-04-20 20:38 by itwolf, 306 阅读, 收藏,
摘要: 1、快速统计字符串中每个字符出现的个数hash表2、求两个字符串公共的最长子串长度和子串双重循环遍历找到长度,同时用二重指针保留住最长长度时候的指针位置3、求一个字符串中最大的重复子串长度和子串和2的思路差不多4、将一个字符串全排列输出(1)递归 (2)使用STL中的next_permutation... 阅读全文

sort+结构体实现二级排序

2015-04-20 20:34 by itwolf, 2835 阅读, 收藏,
摘要: 之前介绍的sort函数由于其效率较高,使用较为简单让我用起来那叫一个爽,今天再写一篇使用sort+结构体实现二级排序的方法。还是先想个问题吧,比如我想输入5个同学的名字和身高,然后得到他们身高的降序,但是如果出现相同身高的情况,名字的拼音靠前的排在前面。好,现在这个问题已经涉及到了二级排序,要按照身... 阅读全文

C++ STL之迭代器注意事项

2015-04-17 22:55 by itwolf, 1117 阅读, 收藏,
摘要: 1、两个迭代器组成的区间是前闭后开的2、如果迭代器的有效性,如果迭代器所指向的元素已经被删除,那么迭代器会失效http://blog.csdn.net/hsujouchen/article/details/89872333、迭代器指向的内容为空的时候(如已经指向end的时候)是不能访问值的,否则运行... 阅读全文

C++STL之整理算法

2015-04-15 09:15 by itwolf, 319 阅读, 收藏,
摘要: 这里主要介绍颠倒、旋转、随机排列和分类4中常见的整理算法1、颠倒(反转)void reverse(_BidIt _First, _BidIt _Last)_OutIt reverse_copy(_BidIt _First, _BidIt _Last,_OutIt _Dest)2、旋转_FwdIt r... 阅读全文

C++ STL之排序算法

2015-04-14 15:08 by itwolf, 2907 阅读, 收藏,
摘要: 排序算法和查找算法差不多,也涉及到迭代器区间问题,关于该问题的注意事项就不在啰嗦了一、全部排序sort、stable_sortsort是一种不稳定排序,使用时需要包含头文件algorithm默认可以传两个参数或三个参数。第一个参数是要排序的区间首地址,第二个参数是区间尾地址的下一地址。如果只传入这两... 阅读全文

C++ STL之查找算法

2015-04-14 11:29 by itwolf, 2904 阅读, 收藏,
摘要: C++STL有好几种查找算法,但是他们的用法上有很多共同的地方:1、除了binary_search的返回值是bool之外(查找的了返回true,否则返回false),其他所有的查找算法返回值都是一个迭代器(查找成功返回目标所在迭代器的位置,否则返回最后一个元素的后一个位置或者说是容器的end())2... 阅读全文

C++ STL之set的基本操作

2015-04-13 21:05 by itwolf, 12942 阅读, 收藏,
摘要: set是集合,虽然也存在键值和实值,不过两者根本就是同一个值,键值的设置完全就是为了满足红黑树的底层结构,set操作与map很像不过也有些不同。1、set迭代器与map的不同:(1)set使用接引用运算符*取值,而map使用first和second取值。(2)set的迭代器都是常量迭代器,不能用来修... 阅读全文

C++STL之map的基本操作

2015-04-13 15:08 by itwolf, 853 阅读, 收藏,
摘要: STL中基本的关联式容器有map和set,它们都是以红黑树作为其底层的结构,具有非常高的查找、删除效率,内容会按照键值自动排序。使用map的注意事项:1、关联式容器的键值是不允许修改的,所以永远不要试图去修改关联式容器的键值2、插入数据时,如果使用的是insert,并且新插入的键值在原映射中已经存在... 阅读全文

C++ STL之deque的基本操作

2015-04-12 13:40 by itwolf, 1807 阅读, 收藏,
摘要: 前两篇博文中已经介绍了vector和list的两种容器,我们发现他们各有各的优缺点,vector在内存中连续存储,支持随机访问,但是查找和删除的效率比较低,而list在内存中是链式存储的查找和删除的效率很高,但是不支持随机存储,那么deque就综合和两者的优点,将若干连续的内存通过某种手段拼接在一起... 阅读全文

C++ STL之list容器的基本操作

2015-04-12 11:19 by itwolf, 9344 阅读, 收藏,
摘要: 由于list和vector同属于序列式容器,有很多相同的地方,而上一篇中已经写了vector,所以这一篇着重写list和vector的不同之处和特有之处。特别注意的地方:(1)STL中迭代器容器中都要注意的地方(vector中已经提到):1)任何时候同时使用两个迭代器产生的将会是一个前闭后开的区间(... 阅读全文

C++ STL之vector容器的基本操作

2015-04-11 22:48 by itwolf, 686 阅读, 收藏,
摘要: 注意事项:特别注意任何时候同时使用两个迭代器产生的将会是一个前闭后开的区间(具体见插入和删除的例子)特别注意begin()指向的是vec中的第0个元素,而end是指向最后一个元素的后面一个位置(不是最后一个元素)特别注意迭代器的时效性,如果一个迭代器所指向的内容已经被删除,而后又使用该迭代器的话,会... 阅读全文

素数的判断

2015-04-10 21:45 by itwolf, 225 阅读, 收藏,
摘要: 1、遍历2以上N的平方根以下的每一个整数,是不是能整除N 1 bool Isprimer(int n) 2 { 3 int flag=1; 4 if (n<2) 5 return false; 6 if (n==2) 7 return true... 阅读全文

C++STL 之排列

2015-04-10 12:53 by itwolf, 736 阅读, 收藏,
摘要: 固然我们可以自己使用递归编写全排列程序,但是既然STL里面已将有了这个功能为什么不直接用呢,下面就写一下直接使用C++ STL生成全排序的程序函数名:next_permutation包含头文件:algorithm函数原型:template bool next_permutation(Bidirec... 阅读全文