C++学习:其他库函数

本文介绍了C++标准库中的四个重要函数:memset用于内存初始化,swap用于交换变量值,reverse用于反转容器元素,unique用于去除相邻重复元素。这些函数在数据处理和内存管理中具有广泛应用。
摘要由CSDN通过智能技术生成

1.memset

memset()是一个用于设置内存块值的函数它的原型定义在头文件中

memset()函数接受三个参数:
1.ptr:指向要设置值的内存块的指针。
2.value:要设置的值,通常是一个整数。
3.num:要设置的字节数。
memset()函数将ptr指向的内存块的前num个字节设置为value的值。它返回一个指向ptr的指针。
memset()函数通常用于初始化内存块,将其设置为特定的值。
例如,如果要将一个整型数组的所有元素设置为0,可以使用memset()函数如下

int arr[10];
memset(arr,0,sizeof(arr));

在上述示例中,memset(arr,0,sizeof(arr))将数组arr的所有元素设置为0.
需要注意的是,memset()函数对于非字符类型的数组可能会产生未定义行为。
在处理非字符类型的数组时,更好使用C++中的其他方法,如循环遍历来初始化数组,memset会将每个byte设置为value。

#include<bits/stdc++.h>
using namespace std;
int main(void){
	int arr[5];
	memset(arr,0,sizeof(arr));
	for(int i = 0;i<5;++i)
	cout <<arr[i] << ' ';
	//0 0 0 0 0
	return 0;
	
	
	memset(arr,0,sizeof(arr));
	//16843009 16843009 16843009 16843009 16843009
	
	cout << bitset<32>(arr[i]) << ' ';
	//00000001...
}

2.swap

swap(T &a,T &b)函数接受两个参数:
1.a:要交换值的第一个变量的引用
2.b:要交换值的第二个变量的引用
swap()函数通过将第一个变量的值存储到临时变量中,然后将第二个变量的值赋给第一个变量,最后将临时变量的值赋给第二个变量,实现两个变量值的交换。
swap()函数可以用于交换任意类型的变量,包括基本类型(如整数、浮点数等)和自定义类型(如结构体、类对象等)
以下是一个示例,展示如何使用swap()函数交换两个整数的值。

int a = 5;
int b = 9;
std::swap(a,b);

3.reverse

reverse()是一个用于反转容器中元素顺序的函数。
它的原型定义在头文件中

reverse()函数接受两个参数:
1.first:指向容器中要反转的第一个元素的迭代器。
2.last:指向容器中要反转的最后一个元素的下一个位置的迭代器
reverse()函数将[first, last)范围内的元素顺序进行反转。也就是说,它会将[first,last)范围内的元素按相反的顺序重新排列。
reverse()函数可用于反转各种类型的容器,包括数组、向量、链表等

需要注意的是,reverse()函数只能用于支持双向迭代器的容器,因为它需要能够向前和向后遍历容器中的元素。

对于只支持单向迭代器的容器(如前向链表),无法使用reverse()函数进行反转。

4.unique

unique()是一个用于去除容器中相邻重复元素的函数。它的原型定义在头文件中

unique(first, last)函数接受两个参数:
1.first:指向容器中要去重的第一个元素的迭代器。
2.last:指向容器中要去重的最后一个元素的下一个位置的迭代器。
unique() 函数将[first,last)范围内的相邻重复元素去除,并返回一个,去重后的范围中只保留了第一个出现的元素,后续重复的元素都被移除。
unique() 函数可用于去除各种类型的容器中的相邻重复元素,包括数组、向量、链表等
注意:相邻,如果不相邻需要重新排序

以下是一个示例,展示如何使用unique()函数去除一个整型向量中的相邻重复元素:

	vector <int> v = {1, 2 ,3 , 3 , 4 , 4 ,4 ,5};
	
	auto t = unique(v.begin(),v.end());
	//1 2 3 4 5 3 4 4
	
	v.erase(t,v.end());//去除3 4 4
	
	for(int i : v)
		cout << i << ' ';
	return 0;
	

需要注意的是,unique()函数只能去除相邻的重复元素,如果容器中存在非相邻的重复元素,则无法去除。
如果需要去除所有重复元素,而不仅仅是相邻的重复元素,需要对容器进行排序(sort),然后再使用unique()函数。
unique()时间复杂度为O(n)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值