
读书笔记
xuexiacm
在校学生
展开
-
None~C++ 队列之循环队列
转自:NONE:C++ 队列之循环队列循环队列 为充分利用向量空间,克服"假上溢"现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。(1) 循环队列的基本操作 循环队列中进行出队、入队操作时,头尾指针仍要加1,朝前移动。只不过当头尾指针指转载 2013-05-19 17:11:52 · 1148 阅读 · 0 评论 -
容器中打开文件——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 · 924 阅读 · 0 评论 -
cin、cin.get()、getline()(讲解的很详细)黄刚的博客
黄刚的博客:cin、cin.get()、getline()(讲解的很详细)in等函数深入分析很多初学者都认为cin函数是一个很简单的函数,其实不然!cin函数有很多需要了解的知识(比如:cin的返回值是什么,cin提供了哪些成员函数且分别是什么作用,如cin.clear(),cin.ignore(), cin.fail(), cin.good()等等),如果没有很好的掌握,在使用的转载 2012-10-23 10:56:03 · 83843 阅读 · 18 评论 -
C++Primer 8.6
问题描述:编写一个函数,其唯一的形参和返回值都是 iftream& 类型。该个函数应一直读取流直到到达文件结束符为止,还应将读到的内容输出到标准输出中。最后,重设流使其有效,并返回该流。My Code:#include#include#includeusing namespace std;ifstream get(ifstream &file){ string s原创 2012-11-13 20:45:52 · 911 阅读 · 0 评论 -
C++Primer文件读写
#include#include#include#include#includeusing namespace std;int main(){ //---------------------按行写文件----------------------------- //打开文件用于写,若文件不存在,则创建它,若已存在,则清空原内容 //注意路径名中的斜杠要双写 // ofstre原创 2012-11-13 20:06:37 · 961 阅读 · 0 评论 -
8.3
题目:编写一个函数,其唯一的形参和返回值都是 istream& 类型。该个函数应一直读取流直到到达文件结束符为止,还应将读到的内容输出到标准输出中。最后,重设流使其有效,并返回该流。MyCode:#include#include#includeusing namespace std;istream& f(istream& in){ int ival; while(i原创 2012-11-12 17:54:10 · 758 阅读 · 1 评论 -
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 · 1628 阅读 · 0 评论 -
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 · 6433 阅读 · 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 · 20734 阅读 · 0 评论 -
通过引用 调用数组形参
如果形参是数组的引用个,编译器不会讲数组实参转化为指针,为是传递的引用本身。在这种情况下 ,数组大小成为形参和实参类型的一部分。编译器检查数组实参的大小与形参的大小是否匹配:void printValues(int (&asrr)[10]){ /*...........*/} //圆括号必须要,[]操作符的优先级高于&.int main(){ int i =0, j[2]= {原创 2012-11-17 09:28:32 · 2397 阅读 · 0 评论 -
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 · 1176 阅读 · 0 评论 -
C++的sstream相关知识
抠佽了一天就弄了这个:还不错总算是弄出来了:希望有建议和补充我的博客园链接:桑海的博客园博客#include#include //stringstream#include //sscanf,sprintf()using namespace std;int main(){ //*********************************原创 2012-11-17 23:33:15 · 1481 阅读 · 1 评论 -
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 · 1300 阅读 · 0 评论 -
明天看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 · 1577 阅读 · 0 评论 -
方便的预处理器特征(宏)
//把变量和表达式转换成字符串/*写调试代码的时候,编写由包含变量名和后跟变量的字符数组组成的打印表达式是很乏味的。幸运的是,标准C具有字符串化运算符'#'。在一个预处理器宏中的参数前面使用一个#,预处理器会把这个参数转换为一个字符数组。把这一点与没有插入标点符号的若干个字符数组结合而链接车给你一个单独的字符数组,能够生成一个十分方便的宏与调试期间打印出变量的值:#define PR(x)原创 2013-02-03 16:11:22 · 674 阅读 · 0 评论 -
预处理宏与移位运算符
//:预处理宏.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 · 772 阅读 · 0 评论 -
编译过程与调用栈
首先是对代码执行预处理。预处理器(preprocessor)是一个简单的程序,它用程序员(利用预处理器指令)定义好的模式代替源代码中的模式。预处理器指令用来节省输入,增加爱代码的可读性。预处理过的代码通常存放在一个中间文件中。编译一般分两遍进行。首先,对于处理过的代码进行语法分析。编译器吧源代码分解成小的单元并把他们按树形结构组织起来。表达式“A+B”和“B”就是语法分析树的叶子节点。原创 2013-02-01 15:40:32 · 1919 阅读 · 0 评论 -
重载操作符解析
转自: benben重载操作符是个好青年,但是要吐槽的是,我们时常为了重载操作符编写许多重复的代码。这是枯燥的,但是也是必须的。你重载的越多,你的类的弹性就越大。但是,你也不能为所欲为。玩游戏总是遵守相应的规则,写重载操作符亦是如此! 以下是要遵守的游戏规则:一元操作符可以是不带参数的成员函数或带一个参数的非成员函数。二元操作符可以是带一个参数的成员函转载 2012-12-14 19:57:39 · 723 阅读 · 0 评论 -
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 · 419990 阅读 · 28 评论 -
后自增操作符慎用
希望得到解惑:#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 · 796 阅读 · 0 评论 -
继承问题
先看如下一段程序并判断调用函数输出什么?:#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 · 760 阅读 · 0 评论 -
C++ const
一、非引用形参1、普通的非引用类型的参数通过复制对应的是实参实现初始化。当用实参副本初始化形参时,函数并没有访问调用所传递的实参本身,因此不会修改实参的值。在函数调用时,如果该函数使用的是非引用非const形参,则既可以给函数传递const实参,也可以传递非const的实参。这种情况下,无论是const,还是非const的传递,在该调用函数内都可以对形参进行赋值等操作,即可以改变该形参的值原创 2012-11-05 17:36:58 · 588 阅读 · 0 评论 -
C++primer习题6.20
题目:编写程序从标准输入读入一系列 string 对象,直到同一个单词连续出现两次,或者所有的单词都已读完,才结束读取。请使用while 循环,每次循环读入一个单词。如果连续出现相同的单词,便以 break 语句结束循环,此时,请输出这个重复出现的单词;否则输出没有任何单词连续重复出现的信息。代码:#include#includeusing namespace std;in原创 2012-11-04 20:38:25 · 1239 阅读 · 4 评论 -
递归——斐波那契数列
斐波那契数列1.问题描述斐波那契数列是指这样的数列:数列的第一个和第二个数都为1,接下来每个数都等于前面2个数的和。给出了一个正整数a,要求输出斐波那契数列中第a个数。2.输入数据第一行是测试数据的组数n,后面跟着n行输入。每组测试数据占一行,包括一个正整数a(1 3.输出要求输出有n行,每行输出对应一个输入。输出应是一个正整数,为斐波那契数列中第a个数的大小。原创 2012-10-23 22:18:50 · 5190 阅读 · 0 评论 -
C++Primer 4.34习题代码
My code:#include#include#include#includeusing namespace std;int main(){ vector svec; string str; cout while(getline(cin, str)) //输入vector元素 sve原创 2012-10-27 21:58:32 · 724 阅读 · 0 评论 -
二维数组与指针
#includeusing namespace std;int ia[3][4] ={ {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11}};int main(){ cout // sizeof(int): 4// ---------------------ia[3][4原创 2012-10-28 15:02:56 · 609 阅读 · 0 评论 -
C++Primer练习3.13疑问?
读一组整数到vector对象,计算并输出没对相邻元素的和。如果读入元素个数为奇数,则提示用户最后一个元素没有求和,并输出值。#include#includeusing namespace std;int main(){vector svec;//svec为空int value, sum = 0;cout while(cin >> value)原创 2012-10-21 20:27:20 · 635 阅读 · 0 评论 -
cout中表达式的先后执行顺序与输出顺序
#includeusing namespace std;int main(){ int val1; cout cin >> val1; cout cout int val2, val3; cout cin >> val2 >> val3; cout cout i原创 2012-10-25 22:28:16 · 2698 阅读 · 0 评论 -
抽屉原理(又名:鸽笼原理)
百度真是太强大了,百度百科真的好爱你……抽屉原理百科名片 抽屉原理桌上有十个苹果,要把这十个苹果放到九个抽屉里,无论怎样放,我们会发现至少会有一个抽屉里面放两个苹果。这一现象就是我们所说的“抽屉原理”。 抽屉原理的一般含义为:“如果每个抽屉代表一个集合,每一个苹果就可以代表一个元素,假如有n+1或多于n+1个元素放到n个集合中去,其中必转载 2012-10-29 12:05:27 · 15972 阅读 · 0 评论 -
C++primer第三章习题3.7
编一个程序读入两个string对象,测试他们是否相等。若不等,则指出两个中那个较大。接着,改写程序测试他们的长度是否相等,若不等指出那个较长。#include#includeusing namespace std;int main(){string line1, line2;cout getline(cin,line1);getline(cin,line原创 2012-10-21 17:10:55 · 805 阅读 · 0 评论 -
string::size_type类型
string str("Hello word \t");string::size_type size = str.size();cout 解释:从逻辑上讲,size()成员函数似乎应该返回整形数值,或是无符号整数。但事实上,size操作返回的是string::size_type类型的值。string类类型和许多其他库类型都定义了一些配套类型(companion type)。通过原创 2012-10-21 16:24:17 · 1531 阅读 · 0 评论 -
C++操作符的优先级
说明:表中以双横线分割成不同的段,每段内各个操作符的优先级相同,且都高于后面各段中的操作符。操作符的优先级操作符及其结合性功能用法L LL::::::全局作用域类作用域名字空间作用域:: namecalss :: namenamespace :原创 2012-10-30 20:18:19 · 1287 阅读 · 0 评论 -
C++Primer6.18
题目:编写一个小程序,由用户输入两个 string 对象,然后报告哪个 string 对象按字母排列次序而言比较小(也就是说,哪个的字典序靠前)。继续要求用户输入,直到用户请求退出为止。请使用string 类型、string 类型的小于操作符以及 do while 循环实现。Mycoding:#include#includeusing namespace std;int mai原创 2012-11-04 14:57:49 · 1105 阅读 · 1 评论 -
cout输出中多个表达式的先后执行顺序与输出顺序
#include#include#includeusing namespace std;int main(){ vector svec; string word; cout << "Enter strings!(Ctr+Z to the end)" << endl; while(cin >> word) svec.push_back(wo原创 2012-10-24 19:50:38 · 6446 阅读 · 2 评论 -
switch结构注意点
下面每段代码都暴露了一个常见编程错误。请指出并修改之。(a) switch (ival) { case 'a': aCnt++; case 'e': eCnt++; default: iouCnt++; }(a)的错误在于:各个case标号对应的语句块缺少必要的break语句,从而当ival值原创 2012-11-03 17:47:57 · 1344 阅读 · 0 评论 -
cout的输出顺序与其中表达式的执行顺序,以及自增操作优先级
#include#includeusing namespace std;int main(){vector ivec;cout << "Enter numbers(Ctr+Z to the end)" << endl;int val;while(cin >> val)ivec.push_back(val);if(ivec.size() == 0){cout << "No e原创 2012-10-22 09:21:01 · 3007 阅读 · 1 评论 -
递归~红与黑
输出个数:#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 · 1124 阅读 · 0 评论 -
递归~逆波兰式
代码:#include#include#include#include //格式控制using namespace std;double exp(){ string str; cin >> str; switch(str[0]) { case'+': return exp() + exp(); case'-':原创 2012-10-24 12:47:05 · 1058 阅读 · 0 评论 -
C++Primer习题6.12
题目:编写一个小程序,从标准输入读入一系列 string 对象,寻找连续重复出现的单词。程序应该找出满足以下条件的单词的输入位置:该单词的后面紧跟着再次出现自己本身。跟踪重复次数最多的单词及其重复次数。输出重复次数的最大值,若没有单词重复则输出说明信息。例如,如果输入是: how, now now now brown cow cowMy code:#include#incl原创 2012-11-03 21:21:26 · 1439 阅读 · 0 评论 -
C++的优先级
上次代码里面由于优先级出问题,特附录如下:C++的优先级优先级 操作符 结合性 1 :: 左 2 . -> [] () 左 3 ++ -- ~ ! - + & * () sizeof new delete castname_cast 单目操作符 右 4 .* ->* 左 5 * / % 左 6 + - 左 7 > 左 8 >= 左 9 ==原创 2012-10-22 12:16:18 · 652 阅读 · 0 评论