C++语言STL库常用函数

目录

目录

万能头文件

include

1、memset()批量初始化函数

2、next/prev_permutation全排列函数

 3、unique去重函数

 4、reverse()函数

5、fill()函数

6、lower_bound(begin,end,num)函数

7、求绝对值,abs()和 fabs()函数

 8、求幂函数,pow和sqrt

9、swap(a,b)交换函数​​​​​​​


万能头文件

include

C++语言STL库常用函数_第1张图片

1、memset()批量初始化函数

        1.原型:void *memset(集合,初始内容,大小)。

        2.初始化可以为两种内容:整型0和-1,字符ASCLL

        3.应用场景

                        * 需要数组初始值为0和-1。

                        * 需要字符串数组初始化多个相同的值。

                

初始化数组0和-1(只能这两个值)

#include
using namespace std;
int main()
{
	int a[10];
	int b[10];
	int c[10];
	memset(a,-1,sizeof(a));
	//-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 
	memset(b,0,sizeof(b));
	// 0 0 0 0 0 0 0 0 0 0
	memset(c,1,sizeof(c));//虽然不报错,但初始化的内容不是我们想要的内容 
	//16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 
	for(int i=0;i<10;i++)
	{
		printf("%d ",b[i]); 
	}
	return 0;
 } 

初始化为字符

#include
using namespace std;
int main()
{

	char a[10];
	char b[10];
	memset(a,'a',sizeof(a));
	memset(b,'bbbbb',sizeof(b));//虽然给到多个字符,但不报错,且有效的也只有一个 
	for(int i=0;i<10;i++)
	{
		printf("%c ",a[i]); 
	}
	return 0;
 } 

2、next/prev_permutation全排列函数

        1.next_permutation(数组名,数组名+范围):将范围内的排序替换成更大的排序
        2.prev_permutation(数组名,数组名+范围) : 将范围内的排序替换成更小的排序

        3.返回值为bool型,如果在当前排序序列下能找到比当前更“大”的排序返回true
             如果到达最大排序,下一步重复时,返回false 

        4.应用场景:涉及到排列问题。

     

#include
#include
using namespace std;
int a[3]={1,2,3};
//next_permutation(数组名,数组名+范围):将范围内的排序替换成更大的排序
//prev_permutation(数组名,数组名+范围) : 将范围内的排序替换成更小的排序
int main()
{
	//三位数,123,全排列顺序。 
	//1 2 3   1 3 2   2 1 3   2 3 1   3 1 2   3 2 1
	for(int i=0;i<12;i++)
	{
		printf("%d %d %d   ",a[0],a[1],a[2]);
		//如果能找到比当前更“大”的排序返回true
		//如果到达最大排序,下一步重复时,返回false 
		//prev_permutation同理,则相反。 
		if(!next_permutation(a,a+3))
		{
			printf("到达最大的排序!下步进行循环\n"); 
		};
	}
	return 0;	
 }

 3、unique去重函数

           1. 只能除去连续重复或者字符, 不能用于构造唯一性数组。
           2.原数组不会缩小,要求得有效数组段,进行输出 。

       例如:1,1,3,4,1,5,5,5 去重得到序列为:1,3,4,1,5(还有三位随机数,进行忽略)

           3.应用场景:需要去掉连续重复的数字或者字符的数组。

#include
using namespace std;
int main(){
	int a[13]={10,10,10,4,2,4,3,3,4,1,1,4,1};
	char b[10] = {'a','a','b','c','v','a','a','b','c','v'};
	int n = unique(b,b+13)-b;//求得去重后,剩余的个数 
	//全部输出:
	for(int i=0;i<10;i++)
	cout<

 4、reverse()函数

reverse(it, it+a)可以将数组指针在[it, it+a)之间的元素或容器的迭代器在[it, it2)范围内的元素进行反转
a=需要反转数的个数
代码:

整型数反转:

#include
using namespace std;
int main()
{
	int a[10]={0,1,2,3,4,5,6,7,8,9};
     reverse(a,a+10);
     for(int i=0;i<10;i++)
     printf("%d ",a[i]);
	return 0;
} 

 结果:

 字符串反转:

#include
using namespace std;
int main()
{
	char a[10]={"abcdefghi"};
     reverse(a,a+9);
     puts(a);
	return 0;
} 

结果:

5、fill()函数

fill(it,it+n,a)可以把数组容器中的某一段区间赋为某个相同的值。和memset不同,这里的赋值可以是数组类型对应范围中的任意值
n==赋值的个数

n==赋值的内容
代码:

#include
using namespace std;
int main()
{
	int a[5]={1,5,6,7,3};
	char b[10];
    //字符型
	fill(b,b+10,'q'); 
    //整形
     fill(a,a+5,999);//将a[0]~a[4]赋值3为999 
     for(int i=0;i<5;i++)
     printf("%d ",a[i]);
     cout<

结果:

C++语言STL库常用函数_第2张图片

注意: 

C++语言STL库常用函数_第3张图片

6、lower_bound(begin,end,num)函数

使用条件:排好序
从数组的begin位置到end-1位置二分查找第一个大于等于num的数组,找到返回该数组地址,不存在则返回end。通过返回的地址减去起始地址begin,得到数字在数组中的下标
代码:​​​​​​​

#include
using namespace std;
int main()
{
	int x;//下标
	int key; 
	int a[5]; 
	for(int i=0;i<5;i++)
	cin>>a[i];
	cin>>key;//需要查找的元素 
	sort(a,a+5);
	for(int i=0;i<5;i++)
	cout<

结果:

C++语言STL库常用函数_第4张图片

7、求绝对值,abs()和 fabs()函数

abs()用于整型求绝对值,fabs()用于浮点型

#include
#include
using namespace std;
int main()
{
	int a=-199;
	float b=-1.6;
	cout<

 结果:

C++语言STL库常用函数_第5张图片

 8、求幂函数,pow和sqrt

doule pow(base,exp):函数返回以参数baseexp 次幂。如果base为零或负和exp 小于等于零或非整数时,产生域错误。如果溢出,产生范围错误。

sqrt(base):函数返回参数num的平方根。如果num为负,产生域错误。

#include
#include
using namespace std;
int main()
{
	cout<

结果:

C++语言STL库常用函数_第6张图片

9、swap(a,b)交换函数

swap()函数能将a,b两个参数的值交换(目前没有发现不能交换的类型)

#include
#include 
using namespace std;
int main()
{
	int a=10,b=99;
	string st1 = "你好吗?";
	string st2 = "你他妈的!";
	swap(st1,st2);//string类型也可以 
	swap(a,b); 
	cout<<"a = "<

效果:

 C++语言STL库常用函数_第7张图片

你可能感兴趣的:(C++学习,算法刷题,c++,c语言)