函数类小结(不断更新)

看左边的目录,看看有哪些函数;

关于c++中有很多函数在写代码时能够起到很好的作用,以下是作者平常在写算法题中常用的一些函数:

string类:

1.1 memset();

void *memset(void *s, int c, unsigned long n);

解释与用法:

1. s是数组名;

2. c是要赋予的整型数字;(只取后八个字节);

4. n是n个字节;

memset解释:将s中当前位置后面的n个 字节 用ch替换并返回s。
要注意的是n个字节

作用:

1,memset() 函数常用于内存空间初始化;

2,memset()的深刻内涵:用来对一段内存空间全部设置为某个字符;

3,memset可以方便的清空一个结构类型的变量或数组;

注意:

memset 函数按字节对内存块进行初始化,所以不能用它将int数组初始化为 ^^^ 0 ^^^和 ^^^ -1 ^^^  之外的其他值
(除非该值高字节和低字节相同)。

1.2 memcpy();

void *memcpy(void *destin, void *source, unsigned n)

解释与用法:


1. destin-- 指向用于存储复制内容的目标数组,类型强制转换为 void* 指针。
2. source-- 指向要复制的数据源,类型强制转换为 void* 指针。
3. n-- 要被复制的字节数。 


函数的功能是从源内存地址的起始位置开始拷贝若干个字节到目标内存地址中,即从源source中拷贝n个字节到
目标destin中。

作用:
1 . 复制数组;
2. 在算法体重常用于将某一种状态保存下来,然后进行操作后,恢复过来。

1.3 strcpy();

char *strcpy(char* dest, const char *src);
参数:des为目标字符串,source为原字符串。

1. dest 表示空的数组;

2. src 表示一段空间,遇到'\0'结束;


3. 返回值:目标串的地址,指针类型。

功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间

strcpy和memcpy主要有以下3方面的区别。

1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。
2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出memcpy则是根据其第3个参数决定复制的长度
3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy。

1.4 strlen();

extern unsigned int strlen(char *s);

参数:s表示字符串的头指针;

功能 :计算给定字符串的(unsigned int型)长度,不包括'\0'在内;
说明 :返回s的长度,不包括结束符NULL;

作用:计算字符数组中字符串的长度;

杂类:

2.1 atoi();

int atoi(const char *nptr);

atoi (表示 ascii to integer)是把字符串转换成整型数的一个函数,应用在计算机程序和办公软件中。

int atoi(const char *nptr) 函数会扫描参数 nptr字符串,会跳过前面的空白字符(例如空格,tab缩进)等。
如果 nptr不能转换成 int 或者 nptr为空字符串,那么将返回 0 [1]  。特别注意,该函数要求被转换的字符串
是按十进制数理解的。

atoi输入的字符串对应数字存在大小限制(与int类型大小有关),若其过大可能报错-1

作用:读取字符串,去掉tab和空格。

2.2 reverse();

1.reverse函数反转string

string N;
cin>>N;
reverse(N.begin(), N.end());//begin,和end;

2.reverse函数反转字符数组

char s[101];
cin.getline(s,sizeof(s));      //也可以不用cin.getline
int m=strlen(s);
reverse(s,s+m);
puts(s);

3.reverse函数反转整型数组

int a[100];
reverse(a,a+10);         //第二个参数是数组最后一个元素的下一个地址;

2.2map与unordered_map;

map:
头文件为#include<map>
map内部是一颗红黑树(非严格平衡二叉树),红黑树有自动排序的功能,所以map内部的所有元素都是有序的,红黑树的每一个节点都代表这map的一个元素。因此对map进行插入、删除、查找等操作都是相当于对红黑树进行操作。最后根据树的中序遍历可以将键值按照大小顺序遍历出来。

unordered_map:
头文件#include<unordered_map>
unordered_map内部是一个哈希表散列表,把关健值映射到哈希表中的某一个位置,这样查找时间复杂度是O(1)),元素的排列顺序是无序的

1 . 应用于对顺序有要求的问题,用map会更高效。
2 . 对于频繁查找的问题,用unordered_map更高效。
详细情况可以看这里

2.3 substr();

string substr(int d ,int x);

或者是

string substr(int d);

解释:返回从d到x的字符串,如果没有x那么返回之后所有字符组成的字符串。


substr是C++语言函数,主要功能是复制子字符串,要求从指定位置开始,并具有指定的长度。如果没有指定长度
_Count或_Count+_Off超出了源字符串的长度,则子字符串将延续到源字符串的结尾。

作用:

  1. 替换一个string的某一段;
  2. 查询string的某一段;
  3. 提取出字符串的某一段;

Guess you like

Origin blog.csdn.net/weixin_51626694/article/details/118632859