- 博客(61)
- 资源 (14)
- 收藏
- 关注
原创 C++lambda详解~读书笔记
lambda表达式语法: [capture_block](parameters) mutable exception_specification->return_type{ body }lambda表达式包含以下部分:捕捉块(catpure block): 指定如何捕捉所在作用域中的变量,并供给lambda主体使用。参数(parameter): (可选)lambda表达式使
2014-10-06 23:54:13
19011
1
转载 C++11~综述
C++11[编辑]C++11,先前被称作C++0x,即ISO/IEC 14882:2011,是C++编程语言的一个标准。它取代第二版标准ISO/IEC 14882:2003(第一版ISO/IEC 14882:1998公开于1998年,第二版于2003年更新,分别通称C++98以及C++03,两者差异很小),且已被C++14取代。相比于C++03,C++11标准包含核
2014-10-06 12:06:30
1612
转载 C++新特性~摘录lambda
Lambda函数与表示式[编辑]在标准 C++,特别是当使用 C++ 标准程序库算法函数诸如 sort 和 find,使用者经常希望能够在算法函数调用的附近定义一个临时的述部函数(又称谓词函数,predicate function)。由于语言本身允许在函数内部定义类,可以考虑使用函数对象,然而这通常既麻烦又冗赘,也阻碍了代码的流程。此外,标准 C++ 不允许定义于函数内部的类被用于模板,所
2014-10-06 12:04:15
1629
转载 C++ 11 Lambda表达式
C++ 11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda的语法形式如下: [函数对象参数] (操作符重载函数参数) mutable或exception声明 ->返回值类型 {函数体} 可以看到,Lambda主要分为五个部分:[函数对象参数]、(操作符重载函数参数)、mutable或exception声明、->返回值类型
2014-10-06 11:55:53
836
原创 C/C++经典问答
今天百度知道里面看到了一个问题,很有意思,整理了下思路,回答如下。。。一:问题:假设i=0;则1、j=(i++,i++,i++)2、k=(i++)+(i++)+(i++)的结果是什么?是怎么得出的我的回答:j=2k=9语法知识,逗号','是语句的分割,第一句:=的右值是一个复合语句,由三个分语句组成,第二句,=的右值只有一个执行语句执行结果分
2014-02-17 22:37:13
1411
转载 delete一个void*可能会造成泄漏内存
一个论坛上看到k2eats对着个问题的回答,受益匪浅;delete void*在删除内建类型是没有问题的.系统在malloc()的时候已经在分配的内存块记录了分配内存的大小,所以不存在不知道不知道释放多少内存的说法本身不会泄露内存,因为:在堆中分配内存的时候,空闲内存是按照链表连接起来的,释放内存则将内存块链到空闲链上面去,关键是分配的时候不只是分配你所需求的内存大
2014-01-02 22:09:34
5742
转载 C语言:内存字节对齐详解[转载]
原文链接:C语言:内存字节对齐详解[转载]一、什么是对齐,以及为什么要对齐:1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。2. 对齐的作用和原因:各个硬件平台对存储空
2014-01-02 22:02:42
854
转载 None~C++ 队列之循环队列
转自:NONE:C++ 队列之循环队列循环队列 为充分利用向量空间,克服"假上溢"现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。(1) 循环队列的基本操作 循环队列中进行出队、入队操作时,头尾指针仍要加1,朝前移动。只不过当头尾指针指
2013-05-19 17:11:52
1154
转载 string的常用初始化方式
a) string s; //生成一个空字符串s b) string s(str) //拷贝构造函数 生成str的复制品 c) string s(str,stridx) //将字符串str内"始于位置stridx"的部分当作字符串的初值 d) string s(str,stridx,strlen) //将字符串str内"始于stridx且长度顶多strlen"的部分作为字符串的初值
2013-05-12 15:52:42
1260
转载 搓错排相关知识
转自:错排公式分类: 数论 关于程序2012-06-08 19:07 335人阅读 评论(0) 收藏 举报n2错排问题错排问题 就是一种递推式,不过它比较著名且常用,所以要熟记!方法一: n各有序的元素应有n!种不同的排列。如若一个排列式的所有的元素都不在原来的位置上,则称这个排列为错排。任给一个n,求出1,2,……,n的错排个数Dn共有多少个。递归关系式为:D
2013-03-26 20:10:00
877
原创 用union节省内存
#includeusing namespace std;union packed{ char i; short j; int k; long l; float f; double d;};int main(){ cout packed x; x.i = 'c'; cout
2013-03-17 22:14:05
924
转载 C++的64位整数
转自:C++的64位整数[原]by 赤兔 在做ACM题时,经常都会遇到一些比较大的整数。而常用的内置整数类型常常显得太小了:其中long 和 int 范围是[-2^31,2^31),即-2147483648~2147483647。而unsigned范围是[0,2^32),即0~4294967295。也就是说,常规的32位整数只能够处理40亿以下的数。 那遇到比40亿要大的数怎么
2013-03-15 21:14:45
1306
原创 明天看stringstream主要是相当与sprintf/sscanf函数的作用
明天看stringstream主要是相当与sprintf/sscanf函数的作用C_Style#include#include#includeusing namespace std;int get_next(int x){ char s[10]; sprintf(s, "%d", x); int n = strlen(s); for(int i
2013-02-03 23:08:20
1584
原创 方便的预处理器特征(宏)
//把变量和表达式转换成字符串/*写调试代码的时候,编写由包含变量名和后跟变量的字符数组组成的打印表达式是很乏味的。幸运的是,标准C具有字符串化运算符'#'。在一个预处理器宏中的参数前面使用一个#,预处理器会把这个参数转换为一个字符数组。把这一点与没有插入标点符号的若干个字符数组结合而链接车给你一个单独的字符数组,能够生成一个十分方便的宏与调试期间打印出变量的值:#define PR(x)
2013-02-03 16:11:22
680
原创 预处理宏与移位运算符
//:预处理宏.cpp//Mathematical operators#includeusing namespace std;//A macro to display a string and a value#define PRINT(STR, VAR) \ cout << STR " = " << VAR << endl; //cout语句中,两个紧紧相邻的引号默认合并int
2013-02-02 20:04:38
776
原创 编译过程与调用栈
首先是对代码执行预处理。预处理器(preprocessor)是一个简单的程序,它用程序员(利用预处理器指令)定义好的模式代替源代码中的模式。预处理器指令用来节省输入,增加爱代码的可读性。预处理过的代码通常存放在一个中间文件中。编译一般分两遍进行。首先,对于处理过的代码进行语法分析。编译器吧源代码分解成小的单元并把他们按树形结构组织起来。表达式“A+B”和“B”就是语法分析树的叶子节点。
2013-02-01 15:40:32
1928
转载 重载操作符解析
转自: benben重载操作符是个好青年,但是要吐槽的是,我们时常为了重载操作符编写许多重复的代码。这是枯燥的,但是也是必须的。你重载的越多,你的类的弹性就越大。但是,你也不能为所欲为。玩游戏总是遵守相应的规则,写重载操作符亦是如此! 以下是要遵守的游戏规则:一元操作符可以是不带参数的成员函数或带一个参数的非成员函数。二元操作符可以是带一个参数的成员函
2012-12-14 19:57:39
728
原创 后自增操作符慎用
希望得到解惑:#include#include#includeusing namespace std;vector::iterator find(vector::iterator beg, vector::iterator end, string word){ while(beg != end) //慎用后自增符号,此处如果用了程序莫名崩溃。 {
2012-11-20 12:01:47
802
原创 C++的sstream相关知识
抠佽了一天就弄了这个:还不错总算是弄出来了:希望有建议和补充我的博客园链接:桑海的博客园博客#include#include //stringstream#include //sscanf,sprintf()using namespace std;int main(){ //*********************************
2012-11-17 23:33:15
1487
原创 C++Primer8.8——vector中一次读取文件内容
#include#include#include#includeusing namespace std;int main(){ vector files; string fileName, s; cout << "Enter filenames:(Ctr+Z to end)" << endl; while(cin >> fileName)
2012-11-17 17:52:45
1180
原创 容器中打开文件——C++Primer 8.7
#include#include#include#includeusing namespace std;int main(){ vector files; string fileName, line; while(cin >> fileName) files.push_back(fileName); vector::iterator i
2012-11-17 11:17:33
927
原创 通过引用 调用数组形参
如果形参是数组的引用个,编译器不会讲数组实参转化为指针,为是传递的引用本身。在这种情况下 ,数组大小成为形参和实参类型的一部分。编译器检查数组实参的大小与形参的大小是否匹配:void printValues(int (&asrr)[10]){ /*...........*/} //圆括号必须要,[]操作符的优先级高于&.int main(){ int i =0, j[2]= {
2012-11-17 09:28:32
2400
原创 C++Primer 8.6
问题描述:编写一个函数,其唯一的形参和返回值都是 iftream& 类型。该个函数应一直读取流直到到达文件结束符为止,还应将读到的内容输出到标准输出中。最后,重设流使其有效,并返回该流。My Code:#include#include#includeusing namespace std;ifstream get(ifstream &file){ string s
2012-11-13 20:45:52
916
原创 C++Primer文件读写
#include#include#include#include#includeusing namespace std;int main(){ //---------------------按行写文件----------------------------- //打开文件用于写,若文件不存在,则创建它,若已存在,则清空原内容 //注意路径名中的斜杠要双写 // ofstre
2012-11-13 20:06:37
967
原创 8.3
题目:编写一个函数,其唯一的形参和返回值都是 istream& 类型。该个函数应一直读取流直到到达文件结束符为止,还应将读到的内容输出到标准输出中。最后,重设流使其有效,并返回该流。MyCode:#include#include#includeusing namespace std;istream& f(istream& in){ int ival; while(i
2012-11-12 17:54:10
763
原创 C++_Primer中关于cin.clear()的例题
#include#includeusing namespace std;int main(){ int ival; while(cin >> ival, !cin.eof()) //必须输入两个文件结束符才可以结束输入??? { if(cin.bad()) //input stream is corrupted; bail out throw
2012-11-12 16:56:46
1635
原创 C++primer习题编写Sales_item类
My Code://Sales_item.h#include#includeusing namespace std;class Sales_item{public: Sales_item(); //构造函数 //或者 //Sales_item():units_sold("0-201-70535-x"), units_sold(0.0){}; ~Sales_item()
2012-11-08 17:27:33
6447
1
原创 C++输出精度控制
如下代码:#include#includeusing namespace std;void main(){ double f = 3.1415926535; cout << "Enter the huashi temperature:" << endl; //-----------------方法一------------------- /* cout.precision(3
2012-11-07 18:12:55
20741
原创 继承问题
先看如下一段程序并判断调用函数输出什么?:#includeusing namespace std;class Animal{public: void eat() { cout << "animal eat" << endl; } void sleep() { cout << "animal sleep" << endl; } virtual void b
2012-11-06 19:24:39
764
原创 C++ const
一、非引用形参1、普通的非引用类型的参数通过复制对应的是实参实现初始化。当用实参副本初始化形参时,函数并没有访问调用所传递的实参本身,因此不会修改实参的值。在函数调用时,如果该函数使用的是非引用非const形参,则既可以给函数传递const实参,也可以传递非const的实参。这种情况下,无论是const,还是非const的传递,在该调用函数内都可以对形参进行赋值等操作,即可以改变该形参的值
2012-11-05 17:36:58
591
原创 C++primer习题6.20
题目:编写程序从标准输入读入一系列 string 对象,直到同一个单词连续出现两次,或者所有的单词都已读完,才结束读取。请使用while 循环,每次循环读入一个单词。如果连续出现相同的单词,便以 break 语句结束循环,此时,请输出这个重复出现的单词;否则输出没有任何单词连续重复出现的信息。代码:#include#includeusing namespace std;in
2012-11-04 20:38:25
1244
原创 C++Primer6.18
题目:编写一个小程序,由用户输入两个 string 对象,然后报告哪个 string 对象按字母排列次序而言比较小(也就是说,哪个的字典序靠前)。继续要求用户输入,直到用户请求退出为止。请使用string 类型、string 类型的小于操作符以及 do while 循环实现。Mycoding:#include#includeusing namespace std;int mai
2012-11-04 14:57:49
1112
原创 C++Primer习题6.12
题目:编写一个小程序,从标准输入读入一系列 string 对象,寻找连续重复出现的单词。程序应该找出满足以下条件的单词的输入位置:该单词的后面紧跟着再次出现自己本身。跟踪重复次数最多的单词及其重复次数。输出重复次数的最大值,若没有单词重复则输出说明信息。例如,如果输入是: how, now now now brown cow cowMy code:#include#incl
2012-11-03 21:21:26
1444
原创 switch结构注意点
下面每段代码都暴露了一个常见编程错误。请指出并修改之。(a) switch (ival) { case 'a': aCnt++; case 'e': eCnt++; default: iouCnt++; }(a)的错误在于:各个case标号对应的语句块缺少必要的break语句,从而当ival值
2012-11-03 17:47:57
1353
原创 C++ Primer习题5.18
题目:编写程序定义一个 vector 对象,其每个元素都是指向 string 类型的指针,读取该vector 对象,输出每个 string 的内容及其相应的长度。#include#include#includeusing namespace std;int main(){ /*普通 vector svec; string str; cout <<
2012-11-03 14:50:50
700
原创 C++操作符的优先级
说明:表中以双横线分割成不同的段,每段内各个操作符的优先级相同,且都高于后面各段中的操作符。操作符的优先级操作符及其结合性功能用法L LL::::::全局作用域类作用域名字空间作用域:: namecalss :: namenamespace :
2012-10-30 20:18:19
1291
原创 递归~红与黑
输出个数:#include#includeusing namespace std;const size_t row = 21, column = 21;char str[row][column];int w, h;int f(int x, int y){ if(x = h || y >= w) //超区矩阵范围 return 0;
2012-10-29 18:48:44
1139
转载 抽屉原理(又名:鸽笼原理)
百度真是太强大了,百度百科真的好爱你……抽屉原理百科名片 抽屉原理桌上有十个苹果,要把这十个苹果放到九个抽屉里,无论怎样放,我们会发现至少会有一个抽屉里面放两个苹果。这一现象就是我们所说的“抽屉原理”。 抽屉原理的一般含义为:“如果每个抽屉代表一个集合,每一个苹果就可以代表一个元素,假如有n+1或多于n+1个元素放到n个集合中去,其中必
2012-10-29 12:05:27
16020
原创 C/C++中各种类型int、long、double、char表示范围(最大最小值)
#include#include#include using namespace std;int main(){ cout << "type: \t\t" << "************size**************"<< endl; cout << "bool: \t\t" << "所占字节数:" << sizeof(bool); cout ::max
2012-10-28 22:16:05
420074
5
原创 1005Number Sequence
//第一次错误尝试/*#includeusing namespace std;unsigned f(unsigned a, unsigned b, unsigned n){ if(n == 1 || n == 2) return 1; return (a * f(a, b, n-1) + b * f(a, b, n-2)) % 7;}int ma
2012-10-28 21:06:12
1113
谭浩强C程序设计.chm
2012-11-10
C++操作符的优先级
2012-10-30
csdn技术大全
2012-10-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人