第四周枝节

一. reverse函数

###在写回文题的时候有以下函数:
高精度反转:
(在计算高精度时,我们输入的是从高位到低位,但在计算时从低位到高位,因此需要反转)

void turn(int a[])//反转数字 
{int j = 0;for(int i = l; i >= 1; i--)//反着存 { w[++j] = a[i];//存到w数组里 }

于是在 C++STL 中有了reverse函数

#include <iostream>
#include <vector>
#include <algorithm>//reverse函数的头文件int main() {std::vector<int> vec = {1, 2, 3, 4, 5};// 反转整个容器std::reverse(vec.begin(), vec.end());for (int num : vec) {std::cout << num << " ";}std::cout << std::endl;// 反转容器的一部分std::vector<int> vec2 = {1, 2, 3, 4, 5};std::reverse(vec2.begin(), vec2.begin() + 2);for (int num : vec2) {std::cout << num << " ";}std::cout << std::endl;return 0;
}

输出:
5 4 3 2 1
2 1 3 4 5

顺带提及isdigit函数:用于检查给定的字符是否为数字

这个函数定义在 (C++)或 <ctype.h>(C)头文件中。
isdigit 是C和C++标准库中的一个函数,用于检查给定的字符是否为数字。这个函数定义在 <cctype>(C++)或 <ctype.h>(C)头文件中。

函数原型

在C中:

int isdigit(int c);

在C++中:

bool isdigit(int c);

参数

  • c:要检查的字符。

返回值

  • 如果 c 是一个数字字符(‘0’ 到 ‘9’),函数返回非零值(在C中)或 true(在C++中)。
  • 如果 c 不是一个数字字符,函数返回0(在C中)或 false(在C++中)。

二.strcspn函数

strcspn 是 C 语言标准库中的一个函数,它用于计算两个字符串中第一次出现的字符集合的匹配次数。具体来说,strcspn 函数返回两个字符串的最长前缀长度,这个前缀中不包含指定的字符集合。

char str[] = "Hello\n";
str[strcspn(str, "\n")] = '\0'; // 将换行符替换为字符串结束符

写出一些处理字符串的函数
都定义在 <string.h> 头文件中。

  1. strcpy(s1, s2):将字符串 s2 复制到字符串 s1 中。
  2. strncpy(s1, s2, n):将字符串 s2 的前 n 个字符复制到字符串 s1 中。
  3. strcat(s1, s2):将字符串 s2 连接到字符串 s1 的末尾。
  4. strncat(s1, s2, n):将字符串 s2 的前 n 个字符连接到字符串 s1 的末尾。
  5. strcmp(s1, s2):比较两个字符串 s1s2,如果 s1 小于 s2 返回负数,相等返回 0,大于返回正数。
  6. strncmp(s1, s2, n):比较两个字符串 s1s2 的前 n 个字符。
  7. strlen(s):计算字符串 s 的长度,不包括最后的空字符 \0
  8. strchr(s, c):在字符串 s 中查找字符 c 的第一次出现。
  9. strrchr(s, c):在字符串 s 中查找字符 c 的最后一次出现。
  10. strstr(s1, s2):在字符串 s1 中查找子串 s2 的第一次出现。
  11. strspn(s1, s2):计算字符串 s1s2 的最长公共前缀长度,这个前缀中的所有字符都必须在 s2 中出现。
  12. strcspn(s1, s2):计算字符串 s1s2 的最长公共前缀长度,这个前缀中的所有字符都不在 s2 中出现。
  13. strtok(s1, s2):根据 s2 中的分隔符分割 s1 字符串,返回分割后的各个子串。
  14. strdup(s):动态分配内存并复制字符串 s 到这块内存中。
  15. strerror(errnum):根据错误代码 errnum 返回对应的错误信息字符串。
  16. memset(s, c, n):将字符串 s 的前 n 个字符设置为字符 c
  17. memmove(s1, s2, n):移动 n 个字符从字符串 s2s1s1s2 可以重叠。
  18. memcpy(s1, s2, n):复制 n 个字符从字符串 s2s1s1s2 不能重叠。
  19. memcmp(s1, s2, n):比较两个字符串 s1s2 的前 n 个字符。

三.结构体构造函数

1.成员函数

struct Students {// 这是普通成员数据string name;int age;// 下面定义成员函数,修改成员数据值void set(string name, int year) {// 形参与成员数据同名时,用this->访问成员数据this->name = name;age = year;}
};// 某函数中
Students stu;
stu.set("a", 18); // 调用成员函数
cout << stu.name << ' ' << endl; // 输出:a
(1)this指针

this 指针通常用于指向当前对象的实例,允许成员函数访问对象的数据成员和成员函数。

class MyClass {
public:void display() {std::cout << "Value: " << this->value << std::endl;}private:int value;
};int main() {MyClass obj;obj.value = 10;obj.display(); // 输出: Value: 10return 0;
}

在上面的例子中,this->value 指的是 MyClass 对象 obj 的 value 成员。
(display:在屏幕上显示)

2.构造函数

struct Students {string name;int age;int grade;Students(string name, int score) : age(18), grade(score) {this->name = name; // 用"->"访问成员变量}// 构造函数可以重载(形参列表不同)Students(): name("jkz"), age(18), grade(100) {} // {}不能丢掉
}

3.用来创建链表节点

// 定义结构体
struct ListNode {int val;ListNode *next;ListNode(int x) : val(x), next(NULL) {}
};
// 创建节点
// 必须使用new运算符使用堆区空间,以免产生内存错误
ListNode* h = new ListNode(值域的值)// 修改值域,连接新节点
h->next = new ListNode(值域的值)// 往后移动节点
h = h->next// 其他操作……

四.new运算符

不仅分配内存,还可以调用对象的构造函数(如果对象是类的一个实例)
初步认为 new 和 delete 相当于 C 语言中的 malloc 和 free

五.inline关键字

在C++中,inline 关键字用于建议编译器在编译时将函数的定义直接插入到每个函数调用的地方,而不是进行常规的函数调用。这样做的目的是为了减少函数调用的开销,尤其是在函数体较小的情况下。inline 函数通常被用于提高程序的执行效率,尤其是在函数调用频繁的情况下。
简单来说:我现在写代码都能在void前面加一个inline以减少开销,不能用goto~反正我又用不到
相当于 加速

六.字符以数组的形式输入

#include<stdio.h>
int main(){int n;scanf("%d",&n);char a[n][100];for(int i=0;i<n;i++)scanf("%s",a[i]);		return 0;
}

不是a[n]而是a[n][100];
注意不用&,a[i]本身已经是地址。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/65446.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件架构设计——数据表状态切换开关—未来之窗行业应用跨平台架构

一、样式 二、样式 /*开关示例*/.东方仙盟_灵颜妙手 {position: relative;display: inline-block;width: 60px;height: 34px;border-radius: 17px; /* 添加圆角效果&#xff0c;使开关看起来更圆润美观 */box-shadow: 0 0 5px rgba(0, 0, 0, 0.2); /* 添加淡淡的阴影效果&…

django --递归查询评论

表数据 树状结构 action(methods(GET, ), detailFalse) def get_info_pinglun(self, request, *args, **kwargs) -> Response:根据评论id查所有回复params wenxian_pinglun_id --> 评论id;wenxian_pinglun_id self.request.GET.get(wenxian_pinglun_id)results se…

向量叉积浅讲

线段交叉 前提条件有三个点o,a,b,如何判断b在线段oa何方向&#xff0c;可以使用叉积; 1、向量的叉积公式 假设 -点o的坐标是 ( o x , o y ) (o_x, o_y) (ox​,oy​) -点a的坐标是 ( a x , a y ) (a_x, a_y) (ax​,ay​) -点b的坐标是 ( b x , b y ) (b_x, b_y) (bx​,by​) …

适用于项目经理的跨团队协作实践:Atlassian Jira与Confluence集成

适用于项目经理的跨团队协作实践&#xff1a;Atlassian Jira与Confluence集成 现代项目经理的核心职责是提供可视性、保持团队一致&#xff0c;并确保团队拥有交付出色工作所需的资源。在过去几年中&#xff0c;由于分布式团队的需求不断增加&#xff0c;项目经理这一角色已迅速…

基于JAVA+SpringBoot+Vue的问卷调查系统

基于JAVASpringBootVue的问卷调查系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末附源码下载链接&#x1f345; 哈喽兄…

Vue开发环境搭建上篇:安装NVM和NPM(cpnm、pnpm)

文章目录 引言I 安装NVM1.1 Windows系统安装NVM,实现Node.js多版本管理1.2 配置下载镜像1.3 NVM常用操作命令II NPM永久使用淘宝源安装 cnpm安装pnpm【推荐】see also: vscode常用插件引言 淘宝镜像:http://npm.taobao.org 和 http://registry.npm.taobao.org 已在 2022.06.3…

杨天真高情商公式: 建立能量场

在现代社会中&#xff0c;我们常常听到“情商高的人更容易成功”&#xff0c;但情商到底是什么&#xff1f;如何培养高情商&#xff1f;其实&#xff0c;情商并不是天生的&#xff0c;它是可以通过训练和调整的。著名经纪人杨天真曾提到过她的一套“高情商公式”&#xff0c;其…

Kimi进行学术方向选择精讲!

目录 1.文献搜索 2.辅助选题 3.选题判断 在我们之前的文章中&#xff0c;小编都强调了选题在文章价值中的核心作用。一篇优秀的文章背后&#xff0c;肯定有一个精心挑选的选题。选题的好坏直接影响着文章能够发表的期刊等级。许多宝子们却采取了相反的做法&#xff0c;将大量…

vue.js 组件化开发 根组件

Vue.js是一个用于构建用户界面的渐进式JavaScript框架。组件化开发是Vue.js的核心理念之一&#xff0c;它允许开发者将部分代码封装为可重用的组件&#xff0c;从而提高代码的复用性和可维护性。而根组件是Vue.js应用的最顶层组件&#xff0c;它包含了其他所有的组件。 下面详…

YOLO系列正传(五)YOLOv4论文精解(上):从CSPNet、SPP、PANet到CSPDarknet-53

系列文章 YOLO系列基础 YOLO系列基础合集——小白也看得懂的论文精解-CSDN博客 YOLO系列正传 YOLO系列正传&#xff08;一&#xff09;类别损失与MSE损失函数、交叉熵损失函数-CSDN博客 YOLO系列正传&#xff08;二&#xff09;YOLOv3论文精解(上)——从FPN到darknet-53-C…

Vulnhub靶场-Driftingblues 6靶机(至获取shell)

靶机安装好后&#xff0c;照例扫描IP 端口 目录 首页为一个图片&#xff0c;没有什么信息 访问robots.txt&#xff0c;存在一个textpattern/textpattern目录&#xff0c;我们访问为一个登录窗口&#xff0c;sqlmap无法注入 提示我们扫目录时添加.zip扩展名&#xff0c;所以我们…

基于springboot的汽车租赁系统丨源码+数据库+万字文档+PPT

作者简介&#xff1a; 作者&#xff1a;学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等 文末获取“源码数据库万字文档PPT”&#xff0c;支持远程部署调试、运行安装。 技术框架 开发语言&#xff1a;Java 框架&#xff1a;spring…

学习,指针和FLASH

一个经典的指针交换数值函数&#xff1a; #include <stdio.h>void interchange(int *u,int *v); void interchange(int *u,int *v) {int temp;temp*v;*v*u;*utemp; }int main() {int x5,y10;printf("before swap value x:%d value y:%d\n",x,y);interchange(&…

【每日学点鸿蒙知识】组件封装通用方法、callback和await性能对比、Web组件下拉刷新、hsp包报错、WebView圆角

1、HarmonyOS 自定义的组件如何封装一些通用的属性和方法&#xff0c;例如 Java 中的继承&#xff1f; export class Animal{name:stringage:stringconstructor(name:string,age:string) {this.name namethis.age age} }export class Person extends Animal{reading:stri…

Qt父窗口处理子窗口大小变化消息installEventFilter

1.需求描述 父窗口从上到下时标题栏&#xff0c;播放窗口和工具栏&#xff0c;希望监测中间播放窗口的大小变化&#xff0c;来根据分辨率自动调整播放画面的宽高&#xff1b;因为工具栏和标题栏可以隐藏&#xff0c;所以父窗口大小不变&#xff0c;中间的播放窗口也会随着工具…

策略模式以及优化

使用场景 在一个条件语句中又包含了多个条件语句 具体策略类会过多 把抽象策略和具体策略放在一个枚举类里。 方法 exe() 相当于抽象策略&#xff0c;而A和B就相当于实现了抽象策略的具体策略 这样就只需要一个枚举类就可以解决具体策略类过多的问题 public enum Strategy {A{O…

17_HTML5 Web 存储 --[HTML5 API 学习之旅]

HTML5 Web 存储&#xff08;Web Storage&#xff09;是 HTML5 引入的一种在用户浏览器中存储数据的机制。它提供了比传统的 cookies 更加方便和强大的功能&#xff0c;包括更大的存储空间、更好的性能以及更简单的 API。Web 存储主要分为两种类型&#xff1a;localStorage 和 s…

Java处理视频思路

1.首先实现断点续传功能。 断点续传实现思路&#xff1a; 前端对文件分块。前端使用多线程一块一块上传&#xff0c;上传前给服务端发一个消息校验该分块是否上传&#xff0c;如果已上传则不再上传。如果从该断点处断网了&#xff0c;下次上传时&#xff0c;前面的分块已经存在…

RealityCapture导入视频序列失败

问题原因&#xff1a;如果导入的视频文件存在多余的元数据&#xff0c;那么在这里会发生导入失败。 以本人华为手机拍摄的一段.mp4视频为例&#xff1a; 利用ffmpeg在窗口命令行中检查你的视频—— ffmpeg -i your_video_name.mp4your_video_name是你的视频文件名 如下图所示&…

Windows下Python+PyCharm的安装步骤及PyCharm的使用

Windows下PythonPyCharm的安装步骤及PyCharm的使用 文章目录 Windows下PythonPyCharm的安装步骤及PyCharm的使用一、Python的安装&#xff08;1&#xff09;环境准备&#xff08;2&#xff09;Python安装&#xff08;3&#xff09;pip组件的安装 二、PyCharm的安装&#xff08;…