当前位置:   article > 正文

C++函数进阶(各种函数的运用)_c++中有多少函数要学习

c++中有多少函数要学习

函数知识简单描述

这里说以下C++的一些函数知识,给大家巩固下。

  1. 常规函数:调用时,跳转到标记函数起点的内存单元,然后执行函数代码,执行完后跳回到地址被保存的命令处。来回跳跃并记录跳跃位置是需要一定开销的
  2. 内联函数:直接用函数代码替换了函数调用(当内联函数里面包含的代码过多的话与常规函数基本无异)
  3. const运用:用&引用时,想让对变量的修改操作不生效,即只读,那么用const修饰即可,在函数中常用来作为“拷贝构造”(如下面代码)
String(const String & str); 	//拷贝构造
        //常用拷贝构造的场景:
        //1、当类的对象被初始化为同一类的另一个对象时
        //2、当对象被作为参数传递给一个函数时
        //3、当函数返回一个对象时
  • 1
  • 2
  • 3
  • 4
  • 5
  1. 函数默认参数:某个参数提供默认值时,该参数右边其他的参数即使没赋值,都会默认为与该参数的值相同
    记住一点:参数赋值应该从右边的参数开始
  2. 函数重载:如果调用函数时函数参数不完全匹配,就会进行强制类型转换后再匹配

各种常见、常运用的函数总结

1. next_permutation - 需要头文件 algorithm

用法:next_permutation(序列起始地址,序列结束地址)
功能:按序列,生成下一个比当前序列大的序列
正确用法如下举例

int a[10]={1,2,3};
do{
    cout << a[0] << a[1] << a[2];
  }while(next_permutation(a,a+3));
  
// Output:
 // 1  2  3     2  1  3	    3  1  2
 // 1  3  2	    2  3  1     3  2  1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2. 取整函数 - 需要头文件 cmath

ceil():向上取整   floor():向下取整
注意下负数时候的取整情况
正确用法如下举例

int a = 10.5, b = -10.5;
ceil(a);		// Output:11
floor(a);		// Output:10
ceil(b);		// Output:-10
floor(b);		// Output:-11
  • 1
  • 2
  • 3
  • 4
  • 5

3. fill()填充函数 - 需要头文件 algorithm

用法:fill(起始地址,结束地址,填充值)
注意:用new创建的数组,不能用fill填充(因为new出来的数组内存不一定是连续的)
正确用法如下举例

//对一维数组填充:
fill(array,array+4,5);	// Output:array[0] = array[1] = array[2] = array[3] = 5

//对二维数组填充:
int G[6][4];		//fill()填充只能用于静态数组
fill(G[0],G[0]+6*4,520);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4. memset()赋初值函数 - 需要头文件 string.h

详解见:教你学会memset()函数
用法:memset(指针或者数组,赋值,指针或数组的长度)
注意:memset对非字符型数组赋初值是不可取的,它方便清空一个结构类型的变量或数组,常用于内存空间初始化
正确用法如下举例

char buffer[] = "Hello world\n";
memset(buffer, '*', sizeof(buffer));
  • 1
  • 2

memset()和fill()函数对比

  memset是对字节进行操作,所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值;fill原理是把那一块单元赋成指定的值,也就是说任何值都可以。

5. lower_bound() 和 upper_bound() 函数 - 需头文件 algorithm

注意下面范围的区间括号
lower_bound(起始地址,结束地址,val): 用来寻找在数组或容器的[first,last)范围内第一个值大于等于val元素的位置
upper_bound(first,last,val) :用来寻找在数组或容器的[first,last)范围内第一个值大于val元素的位置
如果是数组,返回该位置的指针;若果是容器,返回该位置的迭代器


6. int stoi()函数 - 需要头文件 cstring

用法:int stoi(const string*)
功能:字符处理函数,用于把字符串转换成int输出。
stoi()会做范围检查,默认范围是在int的范围内的,超出范围发生runtime error


7. int atoi()函数 - 需要头文件 cstring

用法:int atoi(const char*)
功能:字符处理函数,用于把字符串转换成int输出,返回一个int类型的值
注意:该函数不会做范围检查,超出上界,则输出上界,超出下界,则输出下界
参数是一个const char*,因此想要处理string,需要使用string.c_str()作为参数,调用 c_str()的方法把这个string转换成 const char*类型
正确用法如下举例

//对于string类型的变量
string s4 = ‘abcd’;
cout << atoi(s4.c_str()) << endl;
  • 1
  • 2
  • 3

8. memcpy()函数 - 需要头文件 cstring

用法:memcpy(destin,source,n)
功能:把source地址开始的n个值赋值给从destin地址开始的n个值
,与strcpy相比,memcpy并不是遇到’\0’就结束,而是一定会拷贝完n个字节,strcpy就只能拷贝字符串了,它遇到’\0’就结束拷贝
需要注意事项: 声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】

推荐阅读
相关标签