C++
文章平均质量分 76
老李的技术杂货铺
这个作者很懒,什么都没留下…
展开
-
C++中static关键字总结
static存在的意义: 函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义一个全局的变量,但定义为一个全局变量有许多缺点,最明显的缺点是破坏了此变量的访问范围(使得在此函数中定义的变量,不仅仅受此原创 2014-04-23 13:56:26 · 1044 阅读 · 0 评论 -
【C++ Primer】关联容器
十、关联容器 map、set、multimap、multiset 1. pair类型 定义在utility头文件中 初始化: pair1, T2> p1 pair p1(v1, v2) make_pair(v1, v2) 操作: p1.first p1.second原创 2013-11-26 14:21:56 · 896 阅读 · 0 评论 -
【C++ Primer】快速入门
一、快速入门 1. gcc、g++、CC区别 gcc是C编译器;g++是C++编译器;linux下cc一般是一个符号连接,指向gcc;gcc和g++都是GUN(组织)的编译器。而CC则一般是makefile里面的一个名字,即宏定义,嘿,因为Linux/Unix都是大小写敏感的系统,这点一定要注意。 2. cerr、clog、cout区别 cerr(无缓冲标准错误)---原创 2013-11-06 22:18:26 · 1044 阅读 · 0 评论 -
【C++ Primer】数组和指针
四、数组和指针 1. 数组 : 数组的长度是固定的! 在数组维数必须是大于等于1的常量表达式,只能包括整型字面值常量、枚举常量、用常量表达式初始化的整型const对象。 初始化:同内置变量,函数外初始化为0,函数内无初始化。 字符数组: char ca[] = "c++"; 最后会自动添加'\0',维数为4; const char ca[3]= "c原创 2013-11-14 20:13:35 · 1121 阅读 · 0 评论 -
【C++ Primer】表达式
五、表达式 1. 求模 两个操作符都为负数,求模的结果为负数,或0: -21 % -8 =-5; 如果只有一个操作数为负数,则结果取决于机器;符号也取决于机器: 21 % -5 = 1 or -4 2. 操作符 移位操作符具有中等优先级:优先级比算数操作符低,但比关系操作符、赋值操作符和条件操作符优先级高。 只有在必要时才使用后置操作符:i++; 前原创 2013-11-14 20:14:12 · 1014 阅读 · 0 评论 -
【C++ Primer】类
十二、类 1. 类的定义和声明 类中的成员函数都默认为inline类型,所以即使在类定义体内的函数声明显示定义为inline类型,在进行函数定义时也能够将inline进行省略。 类声明: class Screen; 有时称为”向前声明“,一般用于编写相互依赖的类; 在C中定义一个struct的结构为: str原创 2013-12-19 22:35:59 · 1216 阅读 · 0 评论 -
【C++ Primer】泛型算法(待修改)
十一、泛型算法 应包含头文件 , 一些算术算法应该包括 大多数情况下,算法都需要使用(至少)两个迭代器来指出算法操作的元素范围,第二个迭代器指向最后一个元素的下一位置,比如说ivec.end(); 1. 只读算法 accumulate(iter, iter, initail) 第三个形参是累加的初值; find_first_of(it原创 2013-11-26 14:22:46 · 1024 阅读 · 0 评论 -
【C++ Primer】变量和基本类型
二、变量和基本类型 1. c++数据类型与机器子长的关系 表示整数、字符和布尔值的算术类型合称为整型。 字符型包括:char与wchar_t,后者用于表示拓展字符集,一般用两个字节表示; 机器字长:是指计算机进行一次整数运算所能处理的二进制数据的位数(整数运算即定点整数运算)。机器字长也就是运算器进行定点数运算的字长,通常也是CPU内部数据通路的宽度。原创 2013-11-07 17:45:34 · 963 阅读 · 0 评论 -
【C++ Primer】标准IO库
八、标准IO库 1. IO标准库 标准库: 头文件 类型 iostream istream, ostream, iostring从前两者派生而来 fstream ifstream, ofstream, fstream从iostream派生而来 sstream原创 2013-11-18 19:42:34 · 1240 阅读 · 0 评论 -
【C++ Primer】用于大型程序的工具
1. 异常处理 异常以类似于将实参传递给函数的方式抛出和捕获。异常可以是可传给非引用实参的任意实参的类型,这意味着必须能够复制该类型的对象。 当抛出一个表达式的时候,被抛出对象的静态编译时类型将决定异常对象的类型。 抛出指针通常是个坏主意。 栈展开:沿着嵌套函数调用链继续向上,直到为异常找到一个catch子句。 栈展开期间,释放局部对象所用的内存并运行类类原创 2014-05-09 01:26:13 · 1104 阅读 · 0 评论 -
【C++ Primer】特殊工具与技术
十七、用于大型程序的工具 1. 优化内存分配 C++类型分配是一个类型化操作:new为特定类型分配内存,并在新分配的内存中构造对象。new表达式会为每个动态分配的类自动调用构造函数。但有些时候需要将内存分配与对象构造分开,因为对预先分配,但以后却不使用的对象进行构造很是浪费的。 C++提供两种方法,分配和释放未构造的的原始内存:原创 2014-05-09 17:41:39 · 1215 阅读 · 0 评论 -
C语言负数的移位运算
在c 中左移也就是所说的逻辑移位,右端补0,而右移是算数移位,左端补齐的是最高位的符号位。 故负数左移,有可能变成正数,但负数右移,肯定还是负数。 用16进制的形式对数据进行赋值,这16进制的数代表的是补码。 i = 0xfffffff7; //0xfffffff7是补码,而不是原码,故i = -9 printf("%d %x\n", i, i); i =转载 2014-01-10 16:57:57 · 2000 阅读 · 0 评论 -
【C++ Primer】语句
六、语句 1. 使用预处理器进行调试 大多数编译器都提供定义NDEBUG选项:CC -DNDEBUG main.C 预处理器还定义了其余四种有用的常量: __FILE__ 文件名 __LINE__ 当前行号 __TIME__ 编译时间 __DATE__ 编译日期 定义了NDEBUG之后(需在文件开头定义),assert语句不再起作用。ass原创 2013-11-14 20:14:41 · 1245 阅读 · 0 评论 -
【C++ Primer】函数
七、函数 1. 参数传递 形参的初始化与变量的初始化一样:如果形参具有非引用类型,则赋值实参的值,如果形参为引用类型,则它只是实参的别名。 指针形参:const int * 类型的可用int *及const int*调用,而int *则只能用int *调用;就如同变量初始化一样 引用形参:非const 引用只能调用非const引用,传递右值也不可以:原创 2013-11-18 19:41:12 · 1115 阅读 · 0 评论 -
【C++ Primer】顺序容器
九、顺序容器 1. 初始化 C c : 适用于所有容器 C c(c2) : 使用于所有容器,类型必须匹配(容器类型和元素类型都必须相同) C c(b, e): b,e是迭代器 C c(n, t) : n个t,只适用于顺序容器 C c(n) :创建有n个值初始化元素的容器,只适用于顺序容器,若T是类,则必须提供默认构造函数,否则将出错原创 2013-11-26 14:20:52 · 1061 阅读 · 0 评论 -
【C++ Primer】标准库类型
三、标准库类型 1. 头文件书写 在头文件中应该只定义确实需要的东西,因此,应该使用完全限定的标准库名字,如std::cout 2. string string的读入是遇到空白字符就会终止,所以用 cin>>a; 输入"hello world"得到的a=hello; 可以使用getline(cin, line)来读取整个字符串,返回值也原创 2013-11-09 23:39:17 · 1138 阅读 · 0 评论