8.C++常用函数和模板函数

# 1.setw()场宽函数

输出时如果setw里的数字比后面字符串、
数字长度大,会在前面用英文空格补全
例:
cout << setw(8) << 12345 << endl;
会在前面补上3个英文空格

2. clock()计算当前程序运行时间函数

检测程序运行时间
#include
clock_t startTime, endTime;
startTime = clock();//计时开始
int a[10];
int b[10] = {};
cout << a[0] << endl;
cout << b[0] << endl;
endTime = clock();//计时结束
cout << (double)(endTime - startTime) / CLOCKS_PER_SEC << endl;

3.sizeof()会计算出数组在内存中预分配字节的大小

4.strcpy,strcmp,strcat,stricmp操作字符串函数

关闭SDL检查:否则会报错。项目-属性-C/C++-常规-SDL检查-否
strlen会循环计算出数组的长度
strcpy字符串拷贝,把b字符串例的内容赋值给a字符串
strcpy(a,b)返回值a
strcat字符串连接函数,把b字符串的内容连接到a字符串的末尾
strcpy(a,b)返回值a
strcmp判断两个字符串是否一致,
如果一样(包括大小写),那么函数的结果就是0
stricmp判断两个字符串是否一致,
如果一样(不区分大小写),那么函数的结果就是0

5.rand()随机数方法

srand()随机种子,如果不设置,默认是1
随机数种子每次都不一样才能保证随机数每次都不一样

srand(time(0));
int size = rand() % 10; //1-10数字随机
cout << time(0) << endl;

6.常用数学函数

绝对值
abs(-3.31564);
幂函数(值,次数)
pow(5, 2);
平方根函数
sqrt(16);

7.swap()交换值函数

int a = 10;
int b = 20;
swap(a,b);
使a,b两个变量的值交换

8.string()字符串函数

  • string转char相互转换
c_str()和data()方法实现string转char*
string str = "hello";
const char* str2 = str.c_str();
const char* str3 = str.data();
cout << str2 << endl;
cout << str3 << endl;
char*/char[]转string直接赋值即可
const char* str1 = "hello";
char str2[] = "hello";
string str;
str = str1;
str = str2;
  • string长度的方法
    length()和size()
  • string判空的方法
    empty()
  • string判断字符串是否相等的方法
    compare()//返回值0是相等,-1是不相等
  • string找其中字符的方法
    find()//返回值是找到的位置,如果没找到返回乱码
  • string插入字符的方法
    str.insert(索引,插入字符)
  • string字符串int类型互转
    int a = 123;
    str = to_string(a);
    int b = atoi(str.c_str());
    cout << b << endl;
  • string截取字符串的方法
    str.substr(起始位置,长度);
    单个参数意思是起始位置拷贝到末尾
    不加参数意思是拷贝整个字符串

9.函数的递归

函数递归的使用
递归次数没有限制,限制的容量,为2M
void show(int a) {
	cout << a << endl;
	if (a > 0) {
		a--;
		show(a);
	}
}

10.模板函数

定义一个函数的模板,当前函数的参数类型是不确定的,使用函数的时候才确定数据类型
在定义不确定的数据类型中有2种写法typename/class,意思是定义一个数据类型
原理:在函数使用的时候,根据实参的类型推导出模板<>中的类型到底是什么

template<typename abc>
abc addNumber(abc a, abc b) {
	return a + b;
}
cout << addNumber(3, 7) << endl;
cout << addNumber(3.12f,2.1f) << endl;
  • 多类型模板
    使用模板的时候务必要注意,模板函数内部能否对推导出来的数据类型进行正确的操作
    如果推导出的数据类型,不能在函数里进行正确操作的话,可以考虑使用函数重载
template<typename T1>
T1 addNumber(T1 a, T1 b) {
	return a + b;
}
string addNumber(string a, string b) {
	return a + b;
}
string a = "abc";
string b = "dag";
cout << addNumber(a,b) << endl;
int c = 2;
int d = 3;
cout << addNumber(c, d) << endl;
  • 补充
    模板类
template<typename T1,typename T2>
class Base {
public:
	T1 a;
	T2 b;
};
Base<int,float> b;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值