lq_C/C++常见知识补充002

memset()函数与fill()函数

作用:给数组中每一个元素赋相同的值
1.memset()函数,头文件string.h,按字节赋值,建议只使用memset赋值0或-1。

//使用方式
memset(数组名,值,sizeof(数组名));

2.fill()函数,头文件algorithm,执行速度比memset函数慢,如果要对数组赋值其他数字(比如1)使用fill()函数。

//使用方式
fill(起始位置,结束位置的下一个位置,值);

例子:

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int a[15];
int b[4][4];
int c[10];
void Print(){
	//输出三个数组结果 
	for(int i=0;i<15;i++)
		cout<<a[i]<<' ';
	cout<<endl;
	for(int i=0;i<4;i++){
		for(int j=0;j<4;j++)
			cout<<b[i][j]<<' ';
		cout<<endl;
	} 
	for(int i=0;i<10;i++)
		cout<<c[i]<<' ';
	cout<<endl;
}
int main()
{
	//使用memset()分别对a,b赋值
	memset(a,0,sizeof(a));
	memset(b,-1,sizeof(b));
	memset(c,1,sizeof(c)); //赋值结果并不是1 
	//输出结果
	cout<<"使用memset赋值结果"<<endl; 
	Print();
	
	//使用fill()函数进行赋值
	fill(a,a+10,5);
	//fill(b,b+8,100);//只能用于一位数组 
	fill(c,c+10,1);
	//输出结果
	cout<<"使用fill()赋值结果"<<endl; 
	Print();
	 
	return 0;
 } 
运行结果:
使用memset赋值结果
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 -1 -1 -1
-1 -1 -1 -1
-1 -1 -1 -1
-1 -1 -1 -1
16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009
使用fill()赋值结果
5 5 5 5 5 5 5 5 5 5 0 0 0 0 0
-1 -1 -1 -1
-1 -1 -1 -1
-1 -1 -1 -1
-1 -1 -1 -1
1 1 1 1 1 1 1 1 1 1

--------------------------------

string.h头文件下的常用函数

strlen(str); 得到字符串长度(字符数组中第一个’\0’前的字符个数)
strcmp(str1,str2);按照字典序比价两个字符串的大小
返回结果大于0,str1>str2
返回结果等于0,两个字符串相同
返回结果小于0,str1<str2
strcpy(str1,str2); 功能:str1=str2; //给字符串赋值
strcat(str1,str2); 功能:str1=str1+str2; //拼接功能
例子:

#include<iostream>
#include<string.h>
using namespace std;
int main()
{
	char str1[20]="Hello Tom";
	char str2[20]="I am Jerry";
	
	int len=strlen(str1);
	cout<<"str1长度为:"<<len<<endl;
	int cmp=strcmp(str1,str2);
	cout<<"str1与str2字典序的比较结果:"<<cmp<<endl;
	strcpy(str1,str2);
	cout<<"赋值str2后str1的值为"<<str1<<endl;
	strcat(str1,str2);
	cout<<"将两个字符串拼接:"<<str1<<endl;
	return 0; 
}

结果:

str1长度为:9
str1与str2字典序的比较结果:-1
赋值str2后str1的值为I am Jerry
将两个字符串拼接:I am JerryI am Jerry

struct结构体变量

struct 定义的变量也能够定义构造函数,和类差不多

浮点数比较

浮点数在计算机中的存储并不总是精确的,在经过大量计算后,一个浮点型的数3.14在计算中可能存储成3.1400000000001,也有可能存储成3.1399999999999,在这种情况下会对比较带来干扰,因为C++中的“==”操作是完全相同才能判定为true。所以需要引入一个极小的esp来对这种误差进行修正。
经验表明,esp取10-8是一个合适的数字,对大多数情况下既不会漏判也不会误判。因此可以将esp定义为常量10-8

const double esp=1e-8;
//用宏定义的形式判断a,b是否相等
#define Equ(a,b) ((fabs((a)-(b)))<(esp))

类似还有:
大于运算>: a-b>esp
小于运算<:a-b<-esp
大于等于运算>=:a-b>=-esp
小于等于运算<=:a-b<esp

黑盒测试

1.单电测试,测试系统会多次运行
2.多点测试,测试系统一般运行一次,每次有多组样例
多点测试一般需要用while结构


本文参考《算法笔记》(胡凡 曾磊 主编)机械工业出版社

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值