再读c++ primer
1.extern的使用 是当在a.cpp文件中想使用b.cpp文件中的全局变量extern_data的时候,当在b.cpp中定义了extern_data,a.cpp使用的时候要在a.cpp文件中声明externint extern_data。
2.对于数组的初始化: 如果在定义数组的时候,没有初始化数组元素,而且是函数内的数组(不是全局的),那么这个数据中的数据时任意的,但是如果在定义数据同时进行初始化部分元素(1、2、3….)那么那些没有被初始化的数组元素被初始化成0,这个不管这个数组是否是全局的。
3.int *p = new int 这个p是未初始化的整形指针
int *p = newint()这个p是经初始化的整形指针
4.c++ 为我们定义了一些调试的宏
__FILE__ 文件名
__LINE__ 所在行号
__TIME__ 文件编译时间
__DATE__ 文件编译日期
5.检测流是否可用状态的方法是把流当成是bool类型
if(cin) while(cin)
流的状态有badbit、failbit、eofbit三种状态。
badbit标志着系统级的故障,如无法恢复读写错误。如果出现了这样的错误,这个流就不可以使用了
failbit这种状态是可恢复的,比如说该输入整数的时候,输入的是字符串
eofbit是在遇到文件结束的时候设置,此时同时还设置了failbit位
6.顺序容器中的元素顺序是和这个元素的值是不相关的,顺序容器元素的顺序被决定于插入的顺序。
7.直接对顺序容器对顺序容器进行赋值的话,容器和容器中的元素类型必须一致。 vector<int> a(3,10);
vector<int>b(a);
但是对构造顺序容器使用迭代器的话,容器中的值只要兼容就行。容器类型可以不相同
构造顺序容器还可以使用数组开始指针和数组结束指针。
vector<<vector<int> > v_v;
list 中的迭代器不支持迭代器去加一个数字。list<int>::iterator it; it += 5(是不支持的)
垂悬指针: 指向曾经存在的对象,但该对象已经不再存在了,此类指针称为垂悬指针。结果未定义,往往导致程序错误,而且难以检测。
顺序容器插入元素:p.insert(p,t)在p前插入值为t、p.insert(p,n,t)在p前插入n个值为t的元素、p.insert(p,b,e)在p前插入迭代器b到迭代器e的元素。
8.c.back()、c.front()返回的是引用,就是迭代器的解引用,这个元素值
c.erase(p)p是一个迭代器指针,指向被删除的元素。
c.erase(b,e)删除b开始 e结束的元素
c.pop_front()删除第一个元素
c.pop_back()删除最后一个元素
9.string的操作
s.find(args)在s中查找args第一次出现
s.rfind(args)在s中查找args最后一次出现
最近工作实在是太忙了,简直是被生活的状态