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

建设通是正规网站吗/长沙官网seo推广

建设通是正规网站吗,长沙官网seo推广,wordpress 自建模版,岳阳网站推广在之前的博客中已经讲过了C语言中的结构体概念了,重复的内容在这儿就不赘述了。C中的结构体在C语言的基础上还有些补充,在这里说明一下,顺便简单地讲一下类的概念。 一、成员函数 结构体类型声明的关键字是 struct ,在C中结构体…

在之前的博客中已经讲过了C语言中的结构体概念了,重复的内容在这儿就不赘述了。C++中的结构体在C语言的基础上还有些补充,在这里说明一下,顺便简单地讲一下类的概念。

一、成员函数

结构体类型声明的关键字是 struct ,在C++中结构体类型声明的基本语法如下:
struct tag
{成员变量列表; //成员变量可以有1个,也可以有多个成员函数列表; //成员函数可以有,也可以没有
} 结构体变量列表; //在声明结构体类型的同时,创建结构体变量,可以有多个,中间使⽤逗号隔开

我们可以发现C++中的结构体和C语言结构体的有一个比较大的差异就是:C++中的结构体中除了有成员变量之外,还可以包含成员函数。下面先概要地介绍一下成员函数:

(1)C++的结构体会有一些默认的成员函数,比如:构造函数、析构函数等,是编译器默认生成的,如果觉得不合适,也是可以自己显示的定义这些函数,这些函数都是自动被调用,不需要手动调用。

(2)除了默认的成员函数之外,我们可以自己定义一些成员函数,这些成员函数可以有,也可以没有,完全根据的实际的需要来添加就可以。

(3)这些成员函数可以直接访问成员变量。

(4)成员函数的调用也使用 . 操作符。
1. 构造函数
构造函数是结构中默认的成员函数之一,构造函数的主要的任务是初始化结构体变量。写了构造函
数,就不需要再写其他成员函数来初始化结构体(类)的成员,而且构造函数是在结构变量创建的时候,编译器自动被调用的。
构造函数的特征如下:
(1)函数名与结构体(类)名相同。
(2)无返回值。
(3)构造函数可以重载。
(4)若未显式定义构造函数,系统会自动生成默认的构造函数。
2. 析构函数
析构函数是用来完成结构体变量中资源的清理工作,也是结构体中默认的成员函数之一。析构函数在结构体变量销毁的时候,被自动调用的。
析构函数的特征如下:
(1)析构函数名是在结构体(类)名前加上字符 ~
(2)无参数无返回值类型。
(3)一个类只能有一个析构函数。若未显式定义析构函数,系统会自动生成默认的析构函数。注意:析构函数不能重载。
#include <iostream>
using namespace std;
struct Stu
{//成员变量string name;int chinese;int math;int total; //构造函数Stu(){cout << "调用构造函数" << endl;name = "小明";chinese = 99;math = 95;total = math + chinese;}//析构函数~Stu(){cout << "调用析构函数" << endl;//对于当前这个类的对象没有啥资源清理}
};
int main()
{struct Stu s;return 0;
}

运行结果打印了调用构造函数和调用析构函数这两句话,这也验证了构造函数和析构函数是会被自动调用的。

3.自定义函数
创建结构体中的自定义函数和我们平时创建自定义函数的方式是一样的,只是在使用的时候需要使用 . 操作符。
#include <iostream>
using namespace std;
struct Stu
{//成员变量string name;int chinese;int math;int total;//构造函数Stu(){name = "小明";chinese = 99;math = 95;total = math + chinese;}void print_stu() //打印{cout << "名字:" << name << endl;cout << "语文:" << chinese << endl;cout << "数学:" << math << endl;cout << "总分:" << total << endl;}
};
int main()
{struct Stu s;s.print_stu();return 0;
}

二、运算符重载

我们在C++中打印数据的时候,习惯了直接使用  cout 来直接打印数据的。比如:
int n = 100;
float f = 3.14f;
cout << n << endl;
cout << f << endl;
那针对 struct Stu 类型的变量能不能直接使用  cout 来打印呢?当我们直接使用时会发现这样是行不通的。 那怎么解决呢?其实在C++中要针对自定义类型的变量,想使用  cout << 来输出变量的内容, 就得对 << 这个输出运算符进行重载。具体代码如下:
#include <iostream>
using namespace std;
struct Stu
{//成员变量string name;int chinese;int math;int total;
};
//重载输出运算符
ostream& operator<<(ostream& os, const Stu & s)
{os << "名字: " << s.name << endl;os << "语文: " << s.chinese << endl;os << "数学: " << s.math << endl;os << "总分: " << s.total << endl;return os;
}
int main()
{struct Stu s = {"张三", 90, 80, 170};cout << s << endl; return 0;
}

ostream&:表示该函数返回一个指向 ostream 对象的引用。ostream 是C++中用于输出流的标准库类,例如 cout 就是 ostream 类型的一个实例。
operator<<:这是重载运算符的语法,允许你定义当使用 `<<` 运算符时应该执行的操作。这里我们重载了 << 运算符,使其能够接受 ostream 和 Stu 类型的参数,并按特定格式输出对象的信息。
(ostream& os, const Stu & s):这个函数接受两个参数,第一个是 ostream 类型的引用 os,代表输出流(如 cout),第二个是一个常量引用 const Stu & s,即要输出的 Stu 类型对象。

接下来就简单地讲集几种运算符重载。

1.加号运算符重载

#include <iostream>
using namespace std;
struct Stu
{int a;float b;Stu operator+(Stu s){Stu s3;s3.a=a+s.a;return s3;}
}s1,s2;
int main()
{s1.a=1;s2.a=2;Stu s3=s1+s2;cout << s3.a;return 0;
}

在这段代码中,Stu operator+(Stu s) 是一个成员函数,用于重载加法运算符(+),以便两个 Stu 类型的对象可以相加。它接受一个 Stu 类型的参数 s 并返回一个 Stu 类型的结果。由于这是一个成员函数,它隐式地接收调用它的对象作为第一个参数。这个运算符重载为s1.operator+(s2),可以简化为s1+s2。当然我们也可以使用全局函数的方式来实现运算符的重载。

#include <iostream>
using namespace std;
struct Stu
{int a;float b;
}s1,s2;
Stu operator+(Stu s1,Stu s2)
{Stu s3;s3.a=s1.a+s2.a;return s3;
}
int main()
{s1.a=1;s2.a=2;Stu s3=s1+s2;cout << s3.a;return 0;
}

这个运算符重载为operator+(s1,s2),可以简化为s1+s2。

2.左移运算符重载

最上面举的cout的例子就是左移运算符重载,是采取全局函数的方式来实现的。在这里顺便一提,在这里如果我们使用成员函数的方式是实现不了的,在下面代码中我们可以看出,虽然能够重载这个运算符,但是实现的效果为s << cout ,并不是我们想要的结果。

#include <iostream>
using namespace std;
struct Stu
{//成员变量string name;int chinese;int math;int total;//重载输出运算符
ostream& operator<<(ostream& os)
{os << "名字: " << name << endl;os << "语文: " << chinese << endl;os << "数学: " << math << endl;os << "总分: " << total << endl;return os;
}
};
int main()
{struct Stu s = {"张三", 90, 80, 170};s << cout; return 0;
}

3.递增运算符重载

#include <iostream>
using namespace std;
struct Stu
{int a;//前置++重载 Stu& operator++(){a++;return *this;}//后置++重载Stu operator++(int){Stu s=*this;a++;return s;}
}s;//重载输出运算符
ostream& operator<<(ostream& os,const Stu& s)
{os << s.a << endl;return os;
}
void test1()
{cout << ++s;
}
void test2()
{cout << s++;
} 
int main()
{s.a=1;test1();s.a=1;test2();return 0;	
} 

在自增运算符的重载中许多思想是和之前一样的,区别在于前置运算符重载作为成员函数时没有额外参数,后置运算符重载作为成员函数时需要一个额外的、类型为int的占位参数。这个参数通常不使用,只是用来与前置运算符区分开来。还有一个注意的点是,在前置++重载时,我们把返回值的类型设为了结构体的引用,这是因为当我们对内置数据连续自增操作是对该数据连续自增的,说起来很奇怪,其实就是进行一次自增操作,变量就自增一次。但如果在这里我们不使用引用,就会返回一个结构体类型的临时变量,如果在进行自增操作,对于原来的结构体变量是没有影响的。而后置++是不会进行连续操作的,所以我们不需要考虑。

4.关系运算符重载

#include <iostream>
#include <string>
using namespace std;
struct Stu
{string name;int age;bool operator==(Stu& s){if(this->name==s.name&&this->age==s.age)return true;elsereturn false;}
};
int main()
{Stu s1={"Tom",12};Stu s2={"Tom",12};if(s1==s2)cout << "same" << endl;return 0;
}

三、结构体排序 - sort

说到排序,我们之前讲过冒泡排序,我们也可以写一个冒泡排序函数来排序一组结构体数据,但是这里给大家介绍一个 C++ 的 STL 中的库函数 sort ,可以直接用来排序数据,只要涉及到数据的排序,又没有明确要求自己实现排序算法的时候,就可以直接使用sort函数。
1.sort 函数介绍
函数原型如下:
//版本1
template <class RandomAccessIterator>
void sort (RandomAccessIterator first, RandomAccessIterator last);
//void sort(开始位置,结束位置);
//first:指向要排序范围的第⼀个元素的迭代器或者指针。
//last:指向要排序范围的最后⼀个元素之后位置的迭代器或者指针。
//版本2
template <class RandomAccessIterator, class Compare>
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare 
comp);
//void sort(开始位置,结束位置,⾃定义排序函数);
//first:指向要排序范围的第⼀个元素的迭代器或者指针。
//last:指向要排序范围的最后⼀个元素之后位置的迭代器或者指针。
//comp:是⼀个⽐较函数或者函数对象
//这⾥开始位置和结束位置,可以是指针,也可以是迭代器
//⾃定义排序函数 可以是函数,也可以是仿函数
sort 函数需要包含的头文件 <algorithm>。在默认情况下 sort 函数,按升序对给定范围 [first,last)中的元素进行排序。
2.排序内置类型数据
对数组进行排序:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{int arr[] = { 4,5,6,9,7,1,2,8,5,4,2 };int size = sizeof(arr) / sizeof(arr[0]);//起始位置和结束位置传的是地址sort(arr, arr + size);for (int i = 0; i < size; i++){cout << arr[i] << " ";}cout << endl;return 0;
}
默认排序结果是升序的。
对字符串中的字符进行排序:
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main()
{string s("defxxxabccba");sort(s.begin(), s.end());cout << s << endl;return 0;
}
这里是对字符串中字符的顺序进行排序,是按照字符的ASCII值进行排序的。默认排序的结果依然是升序。
3.自定义排序
sort 在默认的情况下是按照升序排序,如何按照降序排序呢?如果是结构体类型数据进行排序呢?
怎么办?我们可以使用自定义排序方式:
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare 
comp);
sort 的第三个参数是一个可选的自定义比较函数(或函数对象),用于指定排序的规则。如果不提
供这个参数, std::sort 默认会使用小于运算符 ( < ) 来比较元素,并按照升序排序。这个比较函数,接受两个参数,并返回一个布尔值。如果第一个参数应该排在第二个参数之前,则返回 true;否则返回 false。
接下来试试看,comp 表示可以自定义一个排序方法,使用方法如下:
#include <iostream>
#include <algorithm>
using namespace std;
//自定义一个比较函数,这个⽐较函数能够⽐较被排序数据的2个元素大小
//函数返回bool类型的值
bool compare(int x, int y) 
{return x > y;//排降序
}
int main()
{int arr[] = { 4,5,6,9,7,1,2,8,5,4,2 };int size = sizeof(arr) / sizeof(arr[0]);//将函数名作为第三个参数传⼊sort函数中sort(arr, arr + size, compare);for (int i = 0; i < size; i++){cout << arr[i] << " ";}cout << endl;return 0;
}

当然第三个参数还可以使用结构体中重载()运算符-仿函数。

#include <iostream>
#include<algorithm>
using namespace std;
//仿函数⽅式 - 仿函数也叫函数对象
struct Cmp
{bool operator()(int x, int y){return x > y;//排降序}
}cmp;
int main()
{int arr[] = { 4,5,6,9,7,1,2,8,5,4,2 };int size = sizeof(arr) / sizeof(arr[0]);//将结构体对象作为第三个参数传⼊sort函数中sort(arr, arr + size, cmp);for (int i = 0; i < size; i++){cout << arr[i] << " ";}cout << endl;return 0;
}

四、类

C++中为了更好的实现面向对象,更喜欢使用  class (类)来替换 struct (结构体)。你可以简单粗暴
的理解为 class struct 是一回事,但是其实本上还是有区别的。
1. 类定义
类的关键字是 class ,类中主要也是由两部分组成,分别为成员变量和成员函数。形式如下:
class tag
{
public:成员变量列表;成员函数列表;
}; // ⼀定要注意后⾯的分号
class 是用来定义类类型的关键字,在类中可以定义成员函数和成员变量。
public 是类成员权限访问限定符,标志类中的成员可以公开访问及调用。
在这里我们就能发现一个与结构体不同的地方,结构体中没有public。这是为什么呢? 原因是:结构体的成员变量和成员函数,默认就是公开的,而 class 中的成员变量和成员 函数默认是私有的( private )。
class Stu
{
public: void init_stu() {name= "⼩明";chinese = 0;math = 0;total = 0;}string name; //名字int chinese; //语⽂成绩int math; //数学成绩int total; //总成绩
};
2.类的使用
(1) 创建类对象
int main()
{Stu s1; //创建类对象s1Stu s2; //创建类对象s2return 0;
}

(2)调用类对象成员

像结构体一样,通过操作符( . )即可对类对象的成员进行访问。
#include <iostream>
using namespace std;
int main()
{//创建类对象Stu s1;//调⽤成员变量s1.name = "张三";s1.chinese = 90;s1.math = 98;s1.total = s1.chinese + s1.math;Stu s2;//调⽤成员函数s2.init_stu();return 0;
}

3.访问权限控制

访问限定符是C++语言中的关键字,用于指定类成员的访问权限。
访问限定符主要有三个:
public :成员被声明为 public 后,可以被该类的任何方法访问,包括在类的外部。
protected :成员被声明为 protected 后,可以被该类访问。
private :成员被声明为 private 后,只能被该类的成员函数访问。
#include <iostream>
using namespace std;class Stu
{
public: //将成员函数设置为公有属性void init_stu() {name= "⼩明";chinese = 0;math = 0;total = 0;}
private: //将成员变量设置为私有属性string name; //名字int chinese; //语⽂成绩int math; //数学成绩int total; //总成绩
};
int main()
{Stu stu;stu.init_stu(); //访问公有成员函数cout << stu.name << endl; //访问私有成员变量,编译器报错return 0;
}
通过运行结果可见,类外可直接访问设置为公有的成员,而不可以直接访问私有的成员。 习惯上,外部可访问的成员函数通常设置为公有属性( public ),而为了提高成员变量的 访问安全性,通常将成员变量设置为私有属性( private ),即只有类内部可以访问。

4.结构体和类的区别

C++中 struct class 的区别是什么?
C++兼容了C语言,所以C++中 struct 既可以当成结构体使用,还可以用来定义类,和 class 定义
类是一样的。区别是 struct 定义的类默认访问权限是 public class 定义的类默认访问权限是 private
类的定义既可以使用  struct ,也可以使用  class。C++更常用 class 关键词来定义类,因此在选用  class 的时候需要加上访问限定符 public 才可以在类外调用类的成员函数和成员变量。

相关文章:

C++:结构体和类

在之前的博客中已经讲过了C语言中的结构体概念了&#xff0c;重复的内容在这儿就不赘述了。C中的结构体在C语言的基础上还有些补充&#xff0c;在这里说明一下&#xff0c;顺便简单地讲一下类的概念。 一、成员函数 结构体类型声明的关键字是 struct &#xff0c;在C中结构体…...

MATLAB的数据类型和各类数据类型转化示例

一、MATLAB的数据类型 在MATLAB中 &#xff0c;数据类型是非常重要的概念&#xff0c;因为它们决定了如何存储和操作数据。MATLAB支持数值型、字符型、字符串型、逻辑型、结构体、单元数组、数组和矩阵等多种数据类型。MATLAB 是一种动态类型语言&#xff0c;这意味着变量的数…...

UE求职Demo开发日志#19 给物品找图标,实现装备增加属性,背包栏UI显示装备

1 将用到的图标找好&#xff0c;放一起 DataTable里对应好图标 测试一下能正确获取&#xff1a; 2 装备增强属性思路 给FMyItemInfo添加一个枚举变量记录类型&#xff08;物品&#xff0c;道具&#xff0c;装备&#xff0c;饰品&#xff0c;武器&#xff09;--> 扩展DataT…...

C++泛型编程指南09 类模板实现和使用友元

文章目录 第2章 类模板 Stack 的实现2.1 类模板 Stack 的实现 (Implementation of Class Template Stack)2.1.1 声明类模板 (Declaration of Class Templates)2.1.2 成员函数实现 (Implementation of Member Functions) 2.2 使用类模板 Stack脚注改进后的叙述总结脚注2.3 类模板…...

使用MATLAB进行雷达数据采集可视化

本文使用轮趣科技N10雷达&#xff0c;需要源码可在后台私信或者资源自取 1. 项目概述 本项目旨在通过 MATLAB 读取 N10 激光雷达 的数据&#xff0c;并进行 实时 3D 点云可视化。数据通过 串口 传输&#xff0c;并经过解析后转换为 三维坐标点&#xff0c;最终使用 pcplayer 进…...

【Elasticsearch】allow_no_indices

- **allow_no_indices 参数的作用**&#xff1a; 该参数用于控制当请求的目标索引&#xff08;通过通配符、别名或 _all 指定&#xff09;不存在或已关闭时&#xff0c;Elasticsearch 的行为。 - **默认行为**&#xff1a; 如果未显式设置该参数&#xff0c;默认值为 …...

54【ip+端口+根目录通信】

上节课讲到&#xff0c;根目录起到定位作用&#xff0c;比如我们搭建一个php网站后&#xff0c;注册系统是由根目录的register.php文件执行&#xff0c;那么我们给这个根目录绑定域名https://127.0.0.1&#xff0c;当我们浏览器访问https://127.0.0.1/register.php时&#xff0…...

python算法和数据结构刷题[3]:哈希表、滑动窗口、双指针、回溯算法、贪心算法

回溯算法 「所有可能的结果」&#xff0c;而不是「结果的个数」&#xff0c;一般情况下&#xff0c;我们就知道需要暴力搜索所有的可行解了&#xff0c;可以用「回溯法」。 回溯算法关键在于:不合适就退回上一步。在回溯算法中&#xff0c;递归用于深入到所有可能的分支&…...

DeepSeek横空出世,AI格局或将改写?

引言 这几天&#xff0c;国产AI大模型DeepSeek R1&#xff0c;一飞冲天&#xff0c;在全球AI圈持续引爆热度&#xff0c;DeepSeek R1 已经是世界上最先进的 AI 模型之一&#xff0c;可与 OpenAI 的新 o1 和 Meta 的 Llama AI 模型相媲美。 DeepSeek-V3模型发布后&#xff0c;在…...

聚簇索引、哈希索引、覆盖索引、索引分类、最左前缀原则、判断索引使用情况、索引失效条件、优化查询性能

聚簇索引 聚簇索引像一本按目录排版的书&#xff0c;用空间换时间&#xff0c;适合读多写少的场景。设计数据库时&#xff0c;主键的选择&#xff08;如自增ID vs 随机UUID&#xff09;会直接影响聚簇索引的性能。 什么是聚簇索引&#xff1f; 数据即索引&#xff1a;聚簇索引…...

OpenAI 实战进阶教程 - 第四节: 结合 Web 服务:构建 Flask API 网关

目标 学习将 OpenAI 接入 Web 应用&#xff0c;构建交互式 API 网关理解 Flask 框架的基本用法实现 GPT 模型的 API 集成并返回结果 内容与实操 一、环境准备 安装必要依赖&#xff1a; 打开终端或命令行&#xff0c;执行以下命令安装 Flask 和 OpenAI SDK&#xff1a; pip i…...

python的pre-commit库的使用

在软件开发过程中&#xff0c;保持代码的一致性和高质量是非常重要的。pre-commit 是一个强大的工具&#xff0c;它可以帮助我们在提交代码到版本控制系统&#xff08;如 Git&#xff09;之前自动运行一系列的代码检查和格式化操作。通过这种方式&#xff0c;我们可以确保每次提…...

架构技能(四):需求分析

需求分析&#xff0c;即分析需求&#xff0c;分析软件用户需要解决的问题。 需求分析的下一环节是软件的整体架构设计&#xff0c;需求是输入&#xff0c;架构是输出&#xff0c;需求决定了架构。 决定架构的是软件的所有需求吗&#xff1f;肯定不是&#xff0c;真正决定架构…...

Linux环境下的Java项目部署技巧:安装 Nginx

Nginx 的简介&#xff1a; Nginx 是一个高性能的 HTTP 和反向代理服务器&#xff0c;也是一个 IMAP / POP3 / SMTP 代理服务器。它可以作为网站静态资源的 web 服务器&#xff0c;也可以作为其他应用服务器的反向代理服务器。同时&#xff0c; Nginx 还具有负载均衡的功能。 N…...

前端 Vue 性能提升策略

一、引言 前端性能优化是确保 Web 应用快速响应和流畅用户体验的关键。对于使用 Vue.js 构建的应用,性能优化不仅涉及通用的前端技术,还包括针对 Vue 特性的特定优化措施。本文将从多个方面探讨如何全面提升前端和 Vue 应用的性能。 二、前端性能优化基础 1. 减少初始加载…...

深入理解linux中的文件(上)

1.前置知识&#xff1a; &#xff08;1&#xff09;文章 内容 属性 &#xff08;2&#xff09;访问文件之前&#xff0c;都必须打开它&#xff08;打开文件&#xff0c;等价于把文件加载到内存中&#xff09; 如果不打开文件&#xff0c;文件就在磁盘中 &#xff08;3&am…...

Unity特效插件GodFX

2022Unity安装使用方法​​,将MinDrawer.cs文件MinAttribute改成UnityEngine.PostProcessing.MinAttribute 参考链接: Unity3D特效插件GodFX使用教程_哔哩哔哩_bilibili...

从 C 到 C++:理解结构体中字符串的存储与操作

对于刚入门 C/C 的程序员来说&#xff0c;字符串的存储和操作可能是个容易混淆的知识点。在 C 中&#xff0c;std::string 提供了非常友好的接口&#xff0c;我们可以轻松地在结构体中使用字符串类型&#xff0c;无需关注底层细节。然而&#xff0c;在 C 语言中&#xff0c;字符…...

Linux进阶——时间服务器

NTP是网络时间协议&#xff08;network time protocol&#xff09;的简称&#xff08;应用层的协议&#xff09;&#xff0c;通过UDP123端口进行网络时钟同步。 Chrony是一个开源自由的网络时间协议NTP的客户端和服务器软件。它能让计算机保持系统时钟与时钟服务器&#xff08…...

力扣 295. 数据流的中位数

&#x1f517; https://leetcode.cn/problems/find-median-from-data-stream/ 题目 数据流中不断有数添加进来&#xff0c;add 表示添加数据&#xff0c;find 返回数据流中的中位数 思路 大根堆存储数据流中偏小的数据小根堆存储数据流中偏大的数据若当前的 num 比大根堆的…...

【Linux】进程状态和优先级

个人主页~ 进程状态和优先级 一、进程状态1、操作系统进程状态&#xff08;一&#xff09;运行态&#xff08;二&#xff09;阻塞态&#xff08;三&#xff09;挂起态 2、Linux进程状态&#xff08;一&#xff09;R-运行状态并发执行 &#xff08;二&#xff09;S-浅度睡眠状态…...

携程Java开发面试题及参考答案 (200道-上)

说说四层模型、七层模型。 七层模型(OSI 参考模型) 七层模型,即 OSI(Open System Interconnection)参考模型,是一种概念模型,用于描述网络通信的架构。它将计算机网络从下到上分为七层,各层的功能和作用如下: 物理层:物理层是计算机网络的最底层,主要负责传输比特流…...

Docker 部署教程jenkins

Docker 部署 jenkins 教程 Jenkins 官方网站 Jenkins 是一个开源的自动化服务器&#xff0c;主要用于持续集成&#xff08;CI&#xff09;和持续交付&#xff08;CD&#xff09;过程。它帮助开发人员自动化构建、测试和部署应用程序&#xff0c;显著提高软件开发的效率和质量…...

深入理解开放寻址法中的三种探测序列

一、引言 开放寻址法是解决散列表中冲突的一种重要方法&#xff0c;当发生冲突&#xff08;即两个不同的键通过散列函数计算得到相同的散列值&#xff09;时&#xff0c;它会在散列表中寻找下一个可用的存储位置。而探测序列就是用于确定在发生冲突后&#xff0c;依次尝试哪些…...

图像噪声处理技术:让图像更清晰的艺术

在这个数字化时代&#xff0c;图像作为信息传递的重要载体&#xff0c;其质量直接影响着我们的视觉体验和信息解读。然而&#xff0c;在图像采集、传输或处理过程中&#xff0c;难免会遇到各种噪声干扰&#xff0c;如高斯噪声、椒盐噪声等&#xff0c;这些噪声会降低图像的清晰…...

linux运行级别

运行级别&#xff1a;指linux系统在启动和运行过程中所处的不同的状态。 运行级别之间的切换&#xff1a;init (级别数) 示例&#xff1a; linux的运行级别一共有7种&#xff0c;分别是&#xff1a; 运行级别0&#xff1a;停机状态 运行级别1&#xff1a;单用户模式/救援模式…...

深入剖析Electron的原理

Electron是一个强大的跨平台桌面应用开发框架&#xff0c;它允许开发者使用HTML、CSS和JavaScript来构建各种桌面应用程序。了解Electron的原理对于开发者至关重要&#xff0c;这样在设计应用时能更合理&#xff0c;遇到问题也能更准确地分析和解决。下面将从多个方面深入剖析E…...

C++ 游戏开发:完整指南

目录 什么是游戏开发&#xff1f; 为什么选择 C 进行游戏开发&#xff1f; C 游戏开发&#xff1a;完整指南 1. 理解游戏开发的基础 2. 学习游戏引擎 3. 精通 C 进行游戏开发 4. 学习数学在游戏开发中的应用 5. 探索图形编程 6. 专注于游戏开发的某一领域 7. 通过游戏项目进行实…...

WebForms SortedList 深度解析

WebForms SortedList 深度解析 引言 在Web开发领域,对于数据结构的理解与应用至关重要。其中,SortedList类在WebForms中是一个常用的数据结构,它能够帮助开发者高效地管理有序数据集合。本文将深入解析SortedList类在WebForms中的应用,包括其基本概念、常用方法、性能特点…...

【hot100】刷题记录(12)-回文链表

题目描述&#xff1a; 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为 回文链表 。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true示例 2&#xff1a; …...