1、imread用法要清楚,欲哭无泪!
Mat dstImage = imread("466_1.bmp",0);//图像1
2、读取程序执行时间功能
#include clock_t start_time1 = clock(); clock_t end_time1 = clock(); double processTime1 = static_cast<double>(end_time1 - start_time1) / CLOCKS_PER_SEC * 1000;
3、Vector 越界
vector subscript out of range 是指vector下标越界,一般都是遍历下标出错导致越界访问。一般情况是手一滑就把循环边界写错。当然也有出乎意料的出错地方。
对vector进行遍历的时候经常这么写:
vector<int>a;//a.push_back(2);//...for(int i=0;i{
//a[i]}
这里注意一点,a.size()是一个无符号整数,更加规范的写法是把i定义为size_t类型,也就是无符号整数。
出乎意料的情况:
for( size_t i = 0; i <= v.size()-1; i++) { cout<endl; }
若v.size()=0,也会出现下标越界,因为size=0,则size-1=-1,则此时二进制位全为1,但size-1是一个无符号整数,则变为0−2320−232范围的无符号整数,则其值为232232,所以上述代码在vector.size=0时会出现下标越界访问,当然一般size里不会等于0,但是若是出现在不停迭代变化的场景下如此写必然会出现错误。
预防方法:
可以在vector遍历时利用if添加对下标的检测,若出现错误则格外注意对于循环中