C++STL

模板
型别模板:模板缺省数据类型,在使用时传入数据类型,数据类型不同,定义的类也不同。
非型别模板:模板缺省数据变量,在使用时传入数据类型变量,变量值不同,定义的类也不同。
default 模板参数:和函数默认形参一样,在缺省的情况下,使用默认模板参数,且 默认模板参数 和 默认函数形参都是放在最右边。
typename 关键字:在类中出现 A::type *ptr;编译器一般认为 A::type 是一个类的数据成员,关键字 typename 告诉编译器 A::type 是一个数据类型。
模板成员:使用模板成员函数实现了成员函数集,
	1.如果类不相同,private 和 protected 的数据成员是不可以直接访问,需要提供成员函数获取。
	2.在模板 copy ctor 中,template copy ctor 不能屏蔽 编译器默认提供的 implicit copy ctor, 相同类型的 copy ctor 调用的是 implicit copy ctor, 不同类型的 copy ctor 才会调用 template copy ctor..
异常
try {
	...
	throw exception obj;
}
catch ( exception obj ) {
	deal with exception;
}

注意:
	1.异常处理不是错误处理
	2. 在函数定义时可以使用 异常规格 指明函数可能抛出哪些异常
			void fun() throw( bad_alloc ) //表明函数只能抛出 bad_calloc 异常。
			void fun() throw() //表明该函数不会抛出异常
pairs
pair<type1, type2> 可以将两个对象当作一个对象来使用,在 key 和 value 中经常使用。需要引入的头文件是 <utility>
pair 在比较时,第一对象优先比较,后序在比较第二优先级
智能指针
智能指针的出现是为了解决主动申请堆内存时,在函数返回忘记释放,或是出现异常时不正常退出导致内存泄露而产生。
头文件 <memory>
auto_ptr<type>
share_ptr<type>
weak_ptr<type>
//后序在完成,先在空位
三个常用辅助函数
min() , max(), swap(), 需要引入头文件 <algorithm>
辅助性比较操作符
比较操作符有: > ,  >= , < , <= , == 
在实现类中,如果需要实现比较运算,只需要实现 ==  和 < 操作符即可,标准库中命名空间 std::rel_ops 中提供了 由  <  操作符 转换为  <= , >, >= 的实现。
cstdlib 文件
exit() 函数会立即退出程序,会销毁 static 对象, 清空缓冲区,关闭IO文件,执行 atexit() 注册的回调函数。
abort() 立即退出程序,不做任何处理。
注意:两个函数都是不正常的退出。局部对象不会得到释放。最好在需要退出的地方使用 exception 层层往上抛出异常退出,最后由main() 退出程序。
iterator
c++ 除了 提供 iterator 之外,还提供了三种 iterator adapters: Insert Iterator, Stream Iretator, Reverse Iterator.
Insert Iterator : 是为了使算法(algorithms) 以 insert 方式,而非 overwrite 方式运作。
Stream Iterator : 是为了方便在算法中,向文件或是屏幕输出数据,从文件或是键盘读入数据。 (window 的结束符为 Ctrl +  z, Linux 的结束符 为  Ctrl + d)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值