欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 第四周枝节

第四周枝节

2025/4/20 5:04:35 来源:https://blog.csdn.net/illhm/article/details/144545434  浏览:    关键词:第四周枝节

一. 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]本身已经是地址。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词