CPP_Basic_Summary_0.6

##CPP_Basic_Summary_0.6

1、if语句:必须决定是否执行某个操作时启用,true执行,false跳过
2、if else可以循环嵌套,比如:

if ()
	{something};
else if ()
	{something};
else
	{something};

3、条件运算符的错误防范:应该将variablevalue反转为valuevariable,
因为可以利用编译器更容易捕捉到异常,避免出现if (3=number)的错误
4、逻辑OR使用||表示,或真则真,其是顺序点,先判断左侧,为true则不再判断右侧;
逻辑AND使用&&表示,且假则假,其余同理;逻辑NOT使用!表示,直接对值取反,为此特别需要注意的是:!运算符的优先级高于所有的关系运算符和算术运算符,所以对表达式取反时,必须用括号将表达式括起再取反。然后逻辑运算符AND的优先级高于OR,所以一般不论何种优先级,尽可能使用括号将顺序表现出来而不管是否确实需要括号
5、使用&&来设置取值范围的时候,注意取值范围之间没有缝隙产生,也没重叠;另外,应该注意不要使用if (17<age<49)这样的数学表达式,在C++中会被理解为:if ((17<age)<49),结果将始终为true,必须使用&&连接两个范围:if (age>17&&age<49)
6、如果给一个读取int的程序输入一个过大的值,很多C++实现将会仅仅把这个值截断为合适的大小,并不会通知数据的丢失,所以其中一种方式就是使用double或者long long读取可能的int数据,这样可以防止程序数据溢出,提高鲁棒性
7、C++确保程序从左到右进行逻辑表达式的计算,并在确定结果后立刻停止。
8、&&、||、!运算符也可以用and、or和not分别来表示
9、字符函数库cctype:

函数名称返回值
isalnum()字母数字,返回true
isalpha()字母,返回true
iscntrl()控制字符,返回true
isdigit()数字0~9,返回true
isprint()打印字符(含空格),返回true
isgraph()打印字符(不含空格),返回true
isupper()大写字母,返回true
islower()小写字母,返回true
ispunct()标点符号,返回true
isspace()空白符,返回true
isxdigit()十六进制数,返回true
tolower()大写字母,返回其小写,否则返回该参数
toupper()小写字母,返回其大写,否则返回该参数

10、?:运算符: expression1?expression2:expression3
若表达式1为true则整个表达式的值为表达式2的值,否则整个表达式的值为表达式3的值。在特殊的编程情况下,可用来隐藏代码。一般情况,简单可用?:,复杂应该使用if else
11、switch语句:选择值必须是一个结果为整数值的表达式,可以是int、char或者enum

switch (integer-expression)
{
	case label1:statement
	break;
	default:statement
}

12、在while测试中,以及switch语句将int值和enum比较时,将会对enum执行int提升
13、break和contiune区别:前者将将跳过循环剩余部分离开循环,继续执行后面的语句,后者直接返回条件测试处继续循环,(for ()将会更新测试条件后继续循环,while ()则会直接跳到测试表达式继续循环 )
14、需要注意goto标签语句应该全力避免使用,容易破坏程序的逻辑数据结构和算法流程
15、如果使用cin读取数字却输入了一个字母,也就是类型不匹配的时候,对cin的调用如果被转换为bool类型,将返回false,这意味着可以用非数字输入来结束读取数字的循环,另外,这时候设置的输入错误标记需要使用cin.clear()和cin.get()来重置输入流才可继续输入。需要注意的是,这一方法也会重置EOF文件尾条件
16、可使用AND逻辑控制循环的写入,比如:while (i<max&&cin>>fish[i]) 当左侧为false时,右侧表达式也就是读取表达式将不会被判断
17、使用cin输入,程序将输入视为一系列的字节,其中每个字节都被解释为字符编码,不论目标数据类型是什么,输入一开始都是字符数据——文本数据。之后,cin对象才负责将文本转换为其它类型:

char n;
cin>>n;//这里不会转换,但是存储的是字符的编码
int n;
cin>>n;//不断读取直到遇到非数字字符
double n;
cin>>n;//不断读取直到遇到第一个不属于浮点数的字符
char word[50];
cin>>word;//不断读取直到遇到空白字符
char word[50];
cin.getline(word,50);//不断读取直到遇到换行符,所有字符都被存储到word中,并在末尾加上一个空字符,换行符被丢弃,输入队列中的下一个字符是下一行中的第一个字符

18、对于输出将执行相反的转换,也就是整数被转换为数字字符序列,浮点数被转换为数字字符和其它字符组成的字符序列,而字符数据不需要做任何转换
19、写入到文本文件中:
首先,必须包含头文件fstream,其定义了一个用于输出的ofstream类;其次,必须声明ofstream变量(对象),比如:ofstream fout; 再次,必须指明名称空间std::;然后,必须将声明的变量(对象)与文件用open()方法关联起来,比如:fout.open(filename);最后,写入完后应该使用close()方法将其安全关闭,比如: fout.close() 括号内不需要文件名,因为已经关联过了,如果忘记则会在程序正常终止时自动关闭它。其余<<和>>运算符的用法类似cout
20、从文本文件读取:
同上,只不过创建变量用ifstream,用法也类似cin
21、检查文件是否被打开使用is_open(),类似于:

inFIle.open("Z-Tech.txt");
if (!inFile.is_open())
{
	exit(EXIT_FAILURE)}

22、Windows下的文本文件每行都以回车字符和换行符结尾,通常情况下C++在读取时将这两个字符转换为换行符,并在写入文件时执行相反的转换;而在MAC OS上的部分编辑器不会自动在最后一行末尾加上换行符,因此需要手动在结尾按个回车再保存文件。
23、一般情况下,使用good()方法,如果读取没有任何错误则返回true:while (inFile.good())
24、然而也可以更精确地确定异常产生的原因:

if (inFile.eof())
	cout<<"End of file reached.\n";
else if (inFile.fail())
	cout<<"Input terminated by data mismatch.\n";
else
	cout<<"Unknown reason.\n";

26、可用以下更精简的结构测试成功的同时读取

while (inFile>>value)
{
	something;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值