C++ Tips

1、continue与break

提前声明:continue与break都是只能停止for、while、do...while循环内部。没有if 语句

continue 终止最近的循环中当前迭代并开始下一次迭代,只能出现在for while 循环内部。

for循环内部:1)范围for循环,用序列的下一个元素初始化循环变量。2)传统for循环,继续执行头中expression

while循环:继续判断提条件得值。

break:终止离他最近的循环并从下一条非循环语句开始。

2、类对象与类指针区别

类对象:Student s1      类指针:Student *s2

  1.   类指针,需要new才会分配内存,内存堆永久变量除非释放delete它;可实现多态;调用函数:->
  2.   类对象,实例时分配了内存,内存栈临时变量;调用函数:.

指针好处:
——第一,实现多态。
——第二,在函数调用,传指针参数。不管你的对象或结构参数多么庞大,你用指针,传过去的就是4个字节。如果用对象,参数   传递占用的资源就太大了。 

3、堆和栈区别

堆栈是两种数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。

1、空间分配区别

栈(stack) :由编译器自动分配释放管理。

堆(heap) :需要由程序员分配释放管理,通常在堆中进行动态存储分配,new delete。

2、缓存方式

栈(stack) :一级缓存,他们通常都是被调用时处于存储空间中,调用完毕立即释放; 

堆(heap) :二级缓存,所以调用这些对象的速度要相对来得低一些。

3、数据结构

栈(stack) :先进后出

堆(heap) :队列优先,先进先出,堆可以被看成是一棵树,如:堆排序;

4、 运行程序计时(xx秒)

clock_t begin=clock();
...
clock_t end=clock();
double total_secs=double(end-begin)/CLOCK_PER_SEC;
cout<<"Total time taken:"<<total_secs<<"s"<<endl;

5、函数参数传递

分为两类 :值传递和引用传递,值传递只是将实参的值拷贝给形参,无法通过改变形参改变实参。

指针形参归类为值传递,拷贝指针(地址)给实参,所以可以通过指针间接访问它所指对象,修改对象的值。

通过引用形参直接传入对象,可以修改对象的值。void reset(int &i)

注意:无须修改引用形参的值最好使用常量引用bool isshorter(const string &s1, const strring &s2)

6、nullptr  NULL  0 的区别

 在编译器进行解释程序时,NULL会被直接解释成0,不是关键字,只是一个宏定义

nullptr在C++11中就是代表空指针,不能被转换成数字,关键字

7、容器添加、删除操作使迭代器失效

添加insert;删除erase;

迭代器的位置保持不变,但是其指向元素会发生变化。

List:重要的一条性质就是对于添加/删除操作指向容器的迭代器、指针、引用仍然有效。

Vector:方便访问,但是添加/删除使得其迭代器会失效。幸存:被删元素之前元素的迭代器、引用、指针仍有效。

deque:在首尾之外添加/删除元素会使得迭代器失效。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值