TL里面的常用算法
===================================================
以下这些算法具体通用性(不属于任何一个类):适合数组,所有的容器,字符string
1.查找 find()
find(迭代器first,迭代器last,你要找的那个值);
find_if(迭代器first,迭代器last,函数符);
2.循环 for_each()
for_each(迭代器first,迭代器last,函数符)
3.拷贝 copy()和copy_if()
copy(迭代器first,迭代器last,迭代器pos) //把[first,last)范围的数据拷贝到pos位置
copy(迭代器first,迭代器last,迭代器pos,函数符)
4.删除 remove()和remove_if()
remove(迭代器first,迭代器last,你要删除的值)
remove_if(迭代器first,迭代器last,函数符)
5.逆序 reverse()
reverse(迭代器first,迭代器last)
6.sort()
sort(迭代器first,迭代器last)
sort(迭代器first,迭代器last,函数符)
7.交换 swap()
swap(模板参数,模板参数) //任何类型的数据都可以交换
异常处理
===================================================
1.C语言异常处理
通过保存函数的返回值,判断返回值做异常处理
int fd=open(文件);
if(fd==-1) //通过返回值判断是否发生了异常(错误)
{
异常处理/错误处理
}
2.C++异常处理
C++可以采用C语言的异常处理的方法,但是C++新增了新的异常处理方法
语法格式:
try
{
你要调用的函数;
}catch(你要捕捉的异常类型)
{
你捕捉到异常以后需要做的事情(处理异常)
}
其他代码
try语句块:用来测试调用的函数会不会抛出异常
如果函数抛出了异常---》catch就会自动捕捉到异常,然后执行catch花括号里面的代码
如果函数没有抛出异常(正常执行完毕)---》catch捕捉不到异常,catch花括号里面的代码就不会执行
抛出异常:C++新增了关键字throw用来抛出各种类型的异常
捕捉处理异常:C++新增了关键字catch用来捕捉各种类型的异常,然后在catch的花括号里面处理异常
总结:如果函数使用throw抛出了异常,你必须使用try-catch语句块去捕捉处理异常,不可以再去按照C语言的方式去判断处理异常了
函数也可以抛出多种不同类型的异常,对应的catch也要分别处理
3.throw可以抛出两种类型的异常
第一种:抛出基本数据类型异常
throw -1; //抛出整型异常
throw 2.5; //抛出浮点型异常
throw "函数调用失败了"; //抛出字符串异常
第二种:抛出自定义类型异常
自定义的异常:C++中有个exception类(所有异常的祖先)
程序员定义一个子类,继承exception,然后重写exception中的同名虚函数,实现子类自己的方法
#include <exception>
class exception
{
virtual const char* what() const noexcept;
}
4.异常声明
异常声明:告诉程序员,我这个函数可能会抛出某种/某几种异常,也有可能不抛出任何异常
const char* what() const noexcept; //noexcept告诉程序员以及编译器,what方法是不会抛出任何异常的
int fun(int n) throw(int) //告诉程序员以及编译器,fun方法可能会抛出整型异常
int fun(int n) throw(int,double) //告诉程序员以及编译器,fun方法可能会抛出整型异常或者浮点型异常