随笔分类 -  C/C++

摘要:《C++标准程序库》13.10.3 将标准 Streams 重新定向(Redirecting)通过“设置 stream 缓冲区”来重定向某个 sream。“设置 stream 缓冲区”意味 I/O stream 的重定向可由程控,不必借助操作系统。 1 #include <iostream> 2 #include <fstream> 3 4 using namespace std; 5 6 void Redirect(ostream &); 7 8 int main() 9 {10 cout << "the first row" 阅读全文
posted @ 2013-03-17 18:26 SubmarineX 阅读(4440) 评论(0) 推荐(0)
摘要:参看维基百科:Dangling pointer迷途指针===============================================================================================温馨提示:由于本人英语水品有限,有些地方翻译得可能不准确,也比较生涩。===============================================================================================当所指向的对象被释放或者收回,但是对该指针没有作任何的修改,以至于该指针仍旧指向已经回收的内存地 阅读全文
posted @ 2013-03-02 16:03 SubmarineX 阅读(23574) 评论(0) 推荐(5)
摘要:const int *const method(const int *const &param) const; 1 2 3 4 51:const int常量整型(值不能被修改)2:*const常量指针(指向的对象不能被修改)1和2结合起来:const int *const method();返回指向常量整型的常量指针。3:同14:同23和4结合起来:const int *const &param形参为指向 指向常量整型的常量指针的 引用。5:method() const;调用该方法,不会改变该类内部非 muta... 阅读全文
posted @ 2013-03-02 13:31 SubmarineX 阅读(1551) 评论(0) 推荐(2)
摘要:1 /* 表存储结构 */ 2 // 或者: template <class Type> class DuLinkList; 3 template <class Type> 4 class DuLNode 5 { 6 // 当授予对给定模版的所有实例的访问权的时候, 7 // 在作用域中不需要存在该模版或函数模版的声明。 8 // 实质上,编译器将友元声明也当作类或函数的声明对待。 9 template <class Type> friend class DuLinkList;10 // 或者: friend class DuLinkList<Type 阅读全文
posted @ 2013-02-24 15:30 SubmarineX 阅读(247) 评论(0) 推荐(0)
摘要:fstream::binary开启:新行采用‘LF’,作为一个字节;关闭:新行采用‘CR’‘LF’组合,作为一个字节。关于‘CR’‘LF’,参见:http://en.wikipedia.org/wiki/Newline以下是《C++ Primer》第四版中的一段代码: 1 int main() 2 { 3 fstream fInOut("copyOut", fstream::ate | fstream::in | fstream::out | fstream::binary); 4 if (!fInOut) 5 { 6 cerr << "Un... 阅读全文
posted @ 2013-02-21 15:58 SubmarineX 阅读(409) 评论(0) 推荐(0)
摘要:参考:链接C++ 字符数组有存储区,其值为存储区首地址;字符指针不分配存储区吗,"abc" 以常量形式存于静态数据区,指针指向该区首地址。 1 #include <iostream> 2 3 using namespace std; 4 5 int main() 6 { 7 char s1[] = "abc"; 8 char s2[] = "abc"; 9 10 const char s3[] = "abc";11 const char s4[] = "abc";12 13 cons 阅读全文
posted @ 2012-11-17 10:45 SubmarineX 阅读(418) 评论(0) 推荐(0)
摘要:无意间发现的一个站点Tenouk's C & C++ Site IndexBjarne Stroustrup's FAQ 阅读全文
posted @ 2012-08-23 11:57 SubmarineX 阅读(235) 评论(0) 推荐(0)
摘要:看了《C++编程对缓冲区的理解》,自己试了下,结果为大小4KB。#include <fstream>using namespace std;int main(){ ofstream outfile("test.txt"); for (int i = 0; i < 4096; i++) outfile << 'a'; system("PAUSE"); outfile << 'b'; system("PAUSE"); return 0; }在第一次出现“请按任意键继 阅读全文
posted @ 2012-02-06 23:11 SubmarineX 阅读(146) 评论(0) 推荐(0)
摘要:sizeof 返回一个对象或类型名的字节长度。注意几点:1、一个string的大小与它所指的字符串的长度无关;2、应用在指针类型上的sizeof操作符返回的是包含该类型地址所需的内存长度;3、应用在引用类型上的sizeof操作符返回的是包含被引用对象所需的内存长度。int *pi = new int[13];cout << "pi:\t" << sizeof(pi) << endl;cout << "*pi:\t" << sizeof(*pi) << endl;string st1( 阅读全文
posted @ 2011-06-09 23:42 SubmarineX 阅读(463) 评论(0) 推荐(0)
摘要:首先我承认没有系统地学习过C++,今天看到L的代码,我惊了下,struct怎么搞得跟class有点相似,还有构造函数啊~查了下资料:http://msdn.microsoft.com/en-us/library/64973255(v=VS.90).aspxstruct关键字定义一个结构体类型或一个结构体类型的变量具体内容点上面连接吧,我就写几点在C++里,结构体(a structure)相同于类(a class),除了它的成员(members)被默认为公有的(public)在C里,必须明确地用struct关键字声明一个结构体(structure);在C++中,一旦类型被定义了就不必要在这样做了 阅读全文
posted @ 2011-04-09 21:03 SubmarineX 阅读(9487) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=2754大致意思:有一堆骨牌,码好(当然不只是单线程,最初考虑单线程的,一直wa)给你 n, m, l。n表示n张骨牌(从1-n标记),m表示 (x,y)对数,x倒了,y必倒,l 表示用手推倒的牌数,对应相应骨牌的标记号码。计算有几张骨牌倒了。第一次开了10001*10001的数组来存,明显超内存了;第二次用结构体来存(x,y);218MS 324K 793 B C++ 46MS540K733 BC++ #include<stdio.h>#include<algorithm>using 阅读全文
posted @ 2010-06-10 20:10 SubmarineX 阅读(364) 评论(0) 推荐(0)
摘要:sort,用到了结构体第一种sort:282MS代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include<stdio.h>#include<algorithm>using namespace std;struct Array{ char data[30];}dna[20005];bool operator < (Array const& arr1, Array const& arr2) 阅读全文
posted @ 2010-04-22 22:21 SubmarineX 阅读(2013) 评论(0) 推荐(2)
摘要:转自:http://www.360doc.com/showweb/0/0/24257293.aspx前几天Neo写过《编程中的命名设计那点事》,这里也有另外一篇和程序命名的文章,可以从另一个角度看看。1.- 变量应该是尽可能的望文知意。千万不要使用教材中的命名方式。好的变量:daysDateRange, flightNumber, carColor. 坏的变量:days, dRange, temp, data, aux… 在我们的日常工作中,有很大数量的开发人员喜欢使用短的变量名,而不是有含义的变量名。这主要是因为我们大学教科书的那些示例所造成的,人都是先入为主,所以,教科书中的那些很抽象,带 阅读全文
posted @ 2010-04-21 22:29 SubmarineX 阅读(206) 评论(0) 推荐(0)
摘要:转自:http://coolshell.cn/?p=990在我开始设计系统的时候,我会花去很多时间去设计命名,因为好的命名和好的设计是分不开的。In the beginning was the Word, and the Word was with God, and the Word was God太初有道。道与神同在,道就是神。 (约翰福音第一章,第一节)在设计过程中给类,方法和函数好的命名会带来好的设计,虽然这不是一定成立,但是如果坏的命名那一定不会给你带来好的设计。在设计过程,如果你发现你很难命名某一个模块,某个方法时,可能你真正遇到的问题不是难命名的问题,而是这个设计是否真的合理,你或 阅读全文
posted @ 2010-04-21 22:20 SubmarineX 阅读(304) 评论(0) 推荐(0)
摘要:目的是 tot = (tot - num + debt[i])一不小心就写成这样了:tot -= num + debt[i];应该是这样的:tot = tot - num + debt[i];代码可是看了很久,才找到错误的,细节决定成败啊;纪念下!!! 阅读全文
posted @ 2010-04-20 21:34 SubmarineX 阅读(166) 评论(0) 推荐(0)
摘要:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include<iostream>#include<algorithm>using namespace std;int a[3000001];/*bool cmp(int a, int b){ return a>b; //a>b为从大到小,sort默认从小到大}*/int main (){ int nCase,i; while(scanf("% 阅读全文
posted @ 2010-04-12 21:34 SubmarineX 阅读(273) 评论(0) 推荐(0)
摘要:对int数组排序: #include #include int cmp(const void *a, const void *b) //int 是作为返回值类型,返回值为真或假,故用int(包括数据double时) { return(*(int *)a-*(int *)b); //如果是double型数组,则int改为double就可以了 } int... 阅读全文
posted @ 2010-03-03 17:56 SubmarineX 阅读(280) 评论(0) 推荐(0)
摘要:摘自:http://hi.baidu.com/zqhzx/blog/item/256a41b5fccb9b7b8bd4b225.html** 关于快排函数的一些说明 **qsort,包含在stdlib.h头文件里,函数一共四个参数,没返回值.一个典型的qsort的写法如下qsort(s,n,sizeof(s[0]),cmp);其中第一个参数是参与排序的数组名(或者也可以理解成开始排序的地址,因为可以写&s[i]这样的表达式,这个问题下面有说明); 第二个参数是参与排序的元素个数; 第三个三数是单个元素的大小,推荐使用sizeof(s[0])这样的表达式,下面也有说明 :) ;第四个参数 阅读全文
posted @ 2010-02-24 11:00 SubmarineX 阅读(337) 评论(0) 推荐(0)