当前位置: 首页 > news >正文

c++一些使用频率较高的库函数

目录

memset()

memset()接受三个参数:

注意

swap()

reverse()

reverse函数接收两个参数:

reverse()反转整形向量元素顺序示例

unique()

接收两个参数

代码例子-相邻


memset()

memset()是一个用于设置内存块值的函数。它的原型定义在<cstring>头文件中,函数的声明如下:

void* memset(void* ptr,int value,size_t num);//指针 值 重置的大小

memset()接受三个参数:

1.ptr:指向要设置值的内存块的指针

2.value:要设置的值,通常是一个整数(八位二进制数)

3.num:要设置的字节 Byte = 8bit

memset()函数将ptr指向的前num个字节设置为value值。它返回一个指向ptr的指针。

memset()函数通常用于初始化内存块,将其设置为特定的值。

例如如果将一个整形数组的所有元素设置为0,可以使用memset()函数如下:

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

注意

memset()函数对于非字符型的数组可能会产生未定义的行为。

                char-8bit-1Byte

                int-32bit-4Byte

在处理非字符型的数组时,更好使用c++中的其他方法,如循环遍历来初始化数组,memset会将每个Byte设置为value。

swap()

swap(T&a,T&b)函数接收两个参数:

1.a:要交换值的第一个变量的引用。

2.b:要交换值的第二个变量的引用。

swap()函数通过将第一个变量的值存储到临时变量中,然后将第二个变量的值赋给第一个变量,最后将临时变量的值赋给第二个变量,实现两个变量值的交换。

swap()函数可以用于交换任意类型的的变量,包括基本类型(如整数、浮点数等)和自定义类型(如结构体、类对象等)。

reverse()

reverse()是一个用于反转容器中元素顺序的函数。

它的原型定义在<algorithm>头文件中,函数声明如下:

template<class BidirIt>

void reverse(BidirIt first,BidirIt last);

reverse函数接收两个参数:

1.first:指向容器中要反转的第一个元素的迭代器

2.last:指向容器中要反转的最后一个元素的下一个位置的迭代器。

reverse()函数将[firsrt,last)范围内的元素按相反的顺序重新排序。

reverse()函数可用于反转各种类型的容器,包括数组、向量、链表等。

reverse()反转整形向量元素顺序示例

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{vector<int>vec = { 1,2,3,4,5 };reverse(vec.begin(), vec.end());for (int num : vec){cout << num << ' ';}system("pause");return 0;
}

结果:5 4 3 2 1

需要注意的是:reverse()函数只能用于支持双向迭代器的容器,因为它需要能够向前和向后遍历容器中的元素。对于只支持单向迭代器的容器(如前向链表),无法使用reverse()函数进行反转。

unique()

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

接收两个参数

1、first指向容器中要去重的第一个元素的迭代器

2、last指向容器中要去重的最后一个元素的下一个位置的迭代器

因为只能去除相邻相同的元素,所以去重前要先排序

代码例子-相邻

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{int a[] = { 3,1,1,2,2,3 };sort(a,a+5);int n = unique(a, a + 5) - a;for (int i = 0;i<n;i++){cout << a[i] << ' ';}system("pause");return 0;
}

http://www.lryc.cn/news/279616.html

相关文章:

  • 【从零开始学技术】Fiddler 抓取 https 请求大全
  • 第二百六十四回
  • 用Kimi chat识别并整理图片里面的文字
  • 驾驭未来:从传统运维到智能化运维的转型之路
  • LabVIEW在旋转机械故障诊断中的随机共振增强应用
  • 尚硅谷大数据技术-数据湖Hudi视频教程-笔记02【核心概念(基本概念、数据写、数据读)】
  • 鸿蒙(HarmonyOS)应用开发指南
  • Android 13 辅助屏导航栏不显示问题
  • 【QT】标准对话框
  • 微信小程序跳转方式及问题
  • Redis实现分布式会话
  • AntDesignBlazor示例——暗黑模式
  • 高通平台开发系列讲解(USB篇)adb function代码分析
  • SQL基础知识3
  • GBASE南大通用数据库如何检索单行
  • 【数据结构与算法】单链表(无头单向非循环)
  • C#PDF转Excel
  • vivado xsim 终端 模拟
  • Java并查集设计以及路径压缩实现
  • 【leetcode】力扣算法之删除链表中倒数第n个节点【中等难度】
  • C51--摇头测距小车
  • vue中slot和template用法传值
  • SQL性能分析-整理
  • 常用计算电磁学算法特性与电磁软件分析
  • PLC数组队列搜索FC(SCL代码+梯形图程序)
  • NUS CS1101S:SICP JavaScript 描述:前言、序言和致谢
  • 软件测试常见问题2
  • WPF XAML(一)
  • 每日一题:LeetCode-LCR 007. 三数之和
  • 四元数傅里叶变换(Quaternion Fourier Transforms) 在信号和图像处理中的应用