2026《数据结构》考研复习笔记二(C++面向对象)
C++面向对象
- 一、类
- 二、继承
- 三、重载运算符和重载函数
- 四、多态
- 代码示例
一、类
1.1类&对象
class classname//class是关键词,classname是类名
{
Access specifiers://访问修饰符:private/public/protected
Date members/variables;//变量
Member functions(){}//方法
};//分号结束一个类
【例】定义Box类
class Box//盒子 private:
double length;//长
double breadth;//宽
double height;//高 //成员函数声明
public:
tuple< double,double,double>GetMessage();//获取盒子信息
void set(double len,double bre,double hei);//修改盒子信息
}
}; tuple< double,double,double> Box::GetMessage(){
return {length,breadth,height};
} void Box::set(double len,double bre,double hei){
length=len;
breadth=bre;
height=hei;
} 访问类的成员函数:
Box Box1;
Box1.GetMessage();//此处有省略,应当有构造函数,下面介绍
1.2类成员函数
成员函数的作用:
类的成员函数只属于该类,是类的一个成员,它可以访问类的成员,对具体的对象进行操作(private修饰的成员变量只能由成员函数进行修改)
成员函数的定义:
成员函数可以定义在类定义内部,或单独使用范围解析运算符::定义
如:
tuple< double,double,double> Box::GetMessage(){
return {length,breadth,height};
1.3类访问修饰符
public成员:在类的外部可以访问,不需要通过成员函数设置和获取共有变量的值
private成员:在类的外部不可访问,只有该类和友元函数可以访问私有成员
protected成员:与private成员相似,但是protected成员可以在派生类(子类)中访问
三种继承方式:
public继承:基类public成员、protected成员、private成员的访问属性在派生类中分别变成了public,protected,private
protected继承:基类public成员、protected成员、private成员的访问属性在派生类中分别变成了protected,protected,private
private继承:基类public成员、protected成员、private成员的访问属性在派生类中分别变成了private,private,private
1.4构造函数&析构函数
#include< iostream>
using namespace std; class Line
{
public:
void setLength(double len);
double getLength(void);
Line();//不带参数的构造函数
Line(double len);//带参数的构造函数
~Line();//析构函数 private:
double length;
}; Line::Line(void){
cout<<"Object is being create"<< endl;
} Line::Line(double len){
cout<<"Object is being create,length= "<< len<< endl;
} Line::~Line(void){
cout<<"Object is being deleted"<< endl;
} void Line::setLength(double len){
length=len;
} double Line::getLength(void){
return length;
} int main(){
Line line;
line.setLength(6.0);
cout<<"Length of line : "<< line.getLength()<< endl;
return 0;
} //编译上述代码并执行产生下面结果:
//Object is being created
//Length of line : 6
//Object is being deleted
1.5拷贝构造函数
拷贝构造函数属于构造函数,如果类带有指针变量并有动态内存分配,它在创建对象时,使用同一类中之前创建的对象来初始化新创建的对象。通常用于:
- 同一个同类型的对象初始化新对象(=赋值)
- 复制对象把它作为参数传递给函数
- 复制对象,并从函数返回这个对象
常见形式:
classname (const classname &obj){……}//obj是一个对象的引用,用于初始化另一个对象
【例】拷贝构造函数——此处省略class的其他函数,只展示拷贝构造函数的定义以及用法
Line::Line(const Line &obj)
{cout << "调用拷贝构造函数并为指针 ptr 分配内存" << endl;ptr = new int;*ptr = *obj.ptr; // 拷贝值
}
// 程序的主函数
int main( )
{Line line(10);Line line2=line1;print(line);return 0;
}
1.6友元函数
类的友元函数在类的定义中声明,但不是成员函数。友元函数定义在类外部,有权访问类的所有private成员和protected成员。
友元可以是函数(友元函数),也可以是类(友元类)
如:
friend void printWidth(Box box);
friend class ClassTwo;
【例】友元函数
class Box
{double width;
public:friend void printWidth( Box box );void setWidth( double wid );
};
// 请注意:printWidth() 不是任何类的成员函数
void printWidth( Box box )
{/* 因为 printWidth() 是 Box 的友元,它可以直接访问该类的任何成员 */cout << "Width of box : " << box.width <<endl;
}
printWidth( box );
1.7内联函数
函数名前有关键字inline的函数为内联函数,内联函数在编译时,编辑器会把该函数的代码副本放置在每个调用该函数的地方。类定义中定义的函数都是内联函数
1.8this指针
this是一个隐藏的指针,可以在类的成员函数中使用,用来指向当前调用对象(当一个对象的成员函数被调用时,编辑器会隐式地传递该对象的地址作为this指针)。友元函数没有this指针,因为友元不是类的成员,只有成员函数才有this指针
例如:
int compare(Box box){return this->Volume() > box.Volume();}Box1.compare(Box2);
1.9指向类的指针
一个指向 C++ 类的指针与指向结构的指针类似,访问指向类的指针的成员,需要使用成员访问运算符 ->
常见操作:
1. MyClass obj;MyClass *ptr=&obj;//指向对象
2. MyClass *ptr=new MyClass;//动态分配
3. void processObject(MyClass *ptr){ptr->display():}//作为函数参数传递
1.10类的静态对象
使用static关键字把类成员定义为静态时,无论创建多少个类的对象,静态成员变量只有一个副本(静态成员在类的所有对象中是共享的)。不能把静态成员变量的初始化放置在类的定义中,但是可以在类的外部通过使用范围解析运算符::重新声明静态变量从而对它进行初始化
静态成员函数即使在类对象不存在的情况下也能被调用,静态函数只要使用类名加范围解析运算符 :: 就可以访问。
静态成员函数没有this指针,只能访问静态成员(包含静态成员变量和静态成员函数)。静态函数即使在类对象不存在的情况下也能被调用,只要使用classname::即可访问
练习实例——点击跳转(笔者本人应用知识点写的代码)
二、继承
2.1派生类
基本形式:class derived_class:access_specifier base_class。其中derived_class是派生类名,access_specifier 是public\protected\private中的一个,base_class是基类名。例如:class Dog:public Animal{};
// 基类
class Shape { protected: int width; int height;
}; // 派生类
class Rectangle: public Shape { public: int getArea() { return (width * height); }
};
派生类可以访问基类中所有的非私有成员。因此基类成员如果不想被派生类的成员函数访问,则应在基类中声明为 private。
2.2多继承
class <派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>,…{
<派生类类体>
};
如
class A: public B, public C{……};
三、重载运算符和重载函数
C++允许在同一个作用域中函数和运算符有多个定义(参数列表不同)——函数重载和运算符重载。
3.1函数重载
重载的同名函数形参必须不同(参数的个数、类型或者顺序)。如:
void print(int i) {cout << "整数为: " << i << endl;}
void print(double f) {cout << "浮点数为: " << f << endl;}
void print(char c[]) {cout << "字符串为: " << c << endl;}
3.2运算符重载
基本形式:< return > operator < op>(parameter)
点击运算符可查看重载代码
一元运算符 | 递增运算符++,递减运算符--,负号-,逻辑非! |
二元运算符 | 加+,减-,乘*,除/ |
关系运算符 | < , > , <= , >= , == |
输入/输出运算符 | << , >> |
赋值运算符 | = |
函数调用运算符 | () |
下标运算符 | [] |
类成员访问运算符 | -> |
四、多态
4.1虚函数
- 在基类声明一个虚函数(关键字为virtual)
- 派生类可以重写虚函数
- 调用虚函数时,会根据对象的实际类型决定调用哪个版本的函数
class Animal {
public:virtual void sound() { // 虚函数cout << "Animal makes a sound" << endl;}
};class Dog : public Animal {
public:void sound() override { // 重写虚函数cout << "Dog barks" << endl;}
};
4.2动态绑定
- 在运行时决定函数调用的具体实现
- 需要使用指向基类的指针或引用来调用虚函数,运行时根据对象的类型决定调用哪个函数
Animal *animal = new Dog();animal->sound(); // 输出: Dog barks
4.3纯虚函数
当想要在基类中定义虚函数,但又不能对虚函数给出有意义的实现,这是会用到纯虚函数
- 一个包含纯虚函数的类被称为抽象类,不能被直接实例化
- 纯虚函数没有函数体 ,声明时使用=0
- 强制派生类提供具体的实现
class Shape {
public:virtual int area() = 0; // 纯虚函数,强制子类实现此方法
};class Rectangle : public Shape {
private:int width, height;
public:Rectangle(int w, int h) : width(w), height(h) { }int area() override { // 实现纯虚函数return width * height;}
};
4.4多态的实现机制
- 虚函数表:C++运行时使用虚函数表来实现多态,每个包含虚函数的类都有一个虚函数表,表中存储了指向类中所有虚函数的指针
本节实例处
代码示例
#include<iostream>
#include<tuple>
using namespace std;class Box {
private:int hei;int len;int bre;Box* next;static int num;
public:Box();//不带参数的构造函数Box(int hei, int len, int bre, Box* next = NULL);//带参数的构造函数Box(const Box& box);//拷贝构造函数(浅拷贝&深拷贝)~Box();//析构函数void set(int hei, int len, int bre, Box* next = NULL);tuple<int, int, int, Box*>GetMessage();int Volume();friend void print(const Box& box);
};int Box::num = 0;//初始化静态变量int main() {Box box(1, 1, 1);cout << "box的体积为" << box.Volume() << endl;print(box);return 0;
}Box::Box():hei(0),len(0),bre(0),next(NULL) {num++;cout << "Block box is being created" << endl;
}Box::Box(int hei, int len, int bre, Box* next) :hei(hei), len(len), bre(bre), next(next) {num++;cout << "A box is being created, whose hei is " << hei << " ,len is " << len << " and bre is " << bre << endl;
}Box::Box(const Box& box) {num++;hei = box.hei;len = box.len;bre = box.bre;next = new Box;*next = *box.next;cout << "A box is being created, whose hei is " << hei << " ,len is " << len << " and bre is " << bre << endl;
}Box::~Box() {cout << "A box is being deleted, whose hei is " << hei << " ,len is " << len << " and bre is " << bre << endl;
}void Box::set(int hei, int len, int bre, Box* next) {this->hei = hei;this->len = len;this->bre = bre;this->next = next;
}tuple<int, int, int, Box*> Box::GetMessage() {return { hei,len,bre ,next };
}int Box::Volume() {return hei * len * bre;
}void print(const Box& box) {cout << "This box message is :" << "height(" << box.hei << ")" << " " << "length(" << box.len << ")" << " " << "breadth(" << box.bre << ")" << endl;
}
跳转返回——继承
成员函数:ReturnType operator-() const{……}
全局函数:ReturnType operator-(const ClassType&obj){……}
class Counter {
private:int count;
public:Counter(int c = 0) : count(c) {}// 前置递增 ++objCounter& operator++() {++count; // 先递增return *this; // 返回当前对象的引用}int getCount() const { return count; }
};int main() {Counter c(5);++c; // 调用 operator++()std::cout << c.getCount(); // 输出 6
}
前置递增++obj重载(全局函数)
class Counter {
private:int count;
public:Counter(int c = 0) : count(c) {}friend Counter& operator++(Counter& c); // 声明友元int getCount() const { return count; }
};// 全局前置 ++
Counter& operator++(Counter& c) {++c.count;return c;
}
后置递增obj++重载(成员函数)
class Counter {
private:int count;
public:Counter(int c = 0) : count(c) {}// 后置递增 obj++Counter operator++(int) {//int是占位参数,用于区分前置和后置Counter temp = *this; // 保存当前值++count; // 递增return temp; // 返回旧值}int getCount() const { return count; }
};int main() {Counter c(5);Counter old = c++; // 调用 operator++(int)std::cout << old.getCount(); // 输出 5(旧值)std::cout << c.getCount(); // 输出 6(新值)
}
后置递增obj++重载(全局函数)
class Counter {
private:int count;
public:Counter(int c = 0) : count(c) {}friend Counter operator++(Counter& c, int); // 声明友元int getCount() const { return count; }
};// 全局后置 ++
Counter operator++(Counter& c, int) {Counter temp = c;++c.count;return temp;
}
class Number {
private:int value;
public:Number(int v) : value(v) {}// 一元减运算符重载(成员函数)Number operator-() const {return Number(-value);}int getValue() const { return value; }
};int main() {Number n(5);Number neg = -n; // 调用重载的一元减运算符std::cout << neg.getValue(); // 输出 -5
}
全局函数重载:
class Number {
private:int value;
public:Number(int v) : value(v) {}int getValue() const { return value; }
};// 一元减运算符重载(非成员函数)
Number operator-(const Number& num) {return Number(-num.getValue());
}int main() {Number n(10);Number neg = -n; // 调用重载的一元减运算符std::cout << neg.getValue(); // 输出 -10
}
class Box {
private:int hei, len, bre;
public:// ...(其他成员函数和构造函数)// 成员函数重载 +Box operator+(const Box& other) const {return Box(hei + other.hei, // 高度相加len + other.len, // 长度相加bre + other.bre // 宽度相加);}
};
全局函数重载
class Box {
private:int hei, len, bre;
public:// ...(构造函数和其他成员函数)// 声明友元,让全局函数能访问私有成员friend Box operator+(const Box& lhs, const Box& rhs);
};// 全局函数重载 +
Box operator+(const Box& lhs, const Box& rhs) {return Box(lhs.hei + rhs.hei,lhs.len + rhs.len,lhs.bre + rhs.bre);
}
class Box {
private:int hei, len, bre;
public:// ...(其他成员函数和构造函数)// 成员函数重载 ==bool operator==(const Box& other) const {return (hei == other.hei) && (len == other.len) && (bre == other.bre);}
};
全局函数
class Box {
private:int hei, len, bre;
public:// ...(构造函数和其他成员函数)// 声明友元,让全局函数能访问私有成员friend bool operator==(const Box& lhs, const Box& rhs);
};// 全局函数重载 ==
bool operator==(const Box& lhs, const Box& rhs) {return (lhs.hei == rhs.hei) && (lhs.len == rhs.len) && (lhs.bre == rhs.bre);
}
#include <iostream>
using namespace std;class Box {
private:int hei, len, bre;
public:// 声明友元函数,允许访问私有成员friend istream& operator>>(istream& is, Box& box);
};// 全局函数重载 >>
istream& operator>>(istream& is, Box& box) {is >> box.hei >> box.len >> box.bre; // 按顺序读取长、宽、高return is; // 返回输入流以支持链式调用(如 cin >> box1 >> box2)
}
class Box {
private:int hei, len, bre;Box* next; // 假设包含动态分配的资源
public:// ...(其他成员函数和构造函数)// 重载赋值运算符 =Box& operator=(const Box& other) {if (this != &other) { // 防止自赋值(如 a = a)hei = other.hei;len = other.len;bre = other.bre;// 深拷贝 next(如果存在)if (next != nullptr) {delete next; // 释放原有资源next = nullptr;}if (other.next != nullptr) {next = new Box(*other.next); // 深拷贝}}return *this; // 返回当前对象的引用}
};
#include <iostream>
using namespace std;class Adder {int value;
public:Adder(int v) : value(v) {}// 重载函数调用运算符int operator()(int x) {return value + x;}
};int main() {Adder add5(5); // 创建一个Adder对象,初始值为5cout << add5(10) << endl; // 像函数一样调用,输出15cout << add5(20) << endl; // 输出25return 0;
}
#include <iostream>
#include <vector>
using namespace std;class IntArray {vector<int> data;
public:IntArray(size_t size) : data(size) {}// 非常量版本,允许修改int& operator[](size_t index) {if (index >= data.size()) {throw out_of_range("Index out of range");}return data[index];}// 常量版本,只读访问const int& operator[](size_t index) const {if (index >= data.size()) {throw out_of_range("Index out of range");}return data[index];}size_t size() const { return data.size(); }
};int main() {IntArray arr(5);// 使用[]赋值for (size_t i = 0; i < arr.size(); ++i) {arr[i] = i * 10;}// 使用[]读取for (size_t i = 0; i < arr.size(); ++i) {cout << arr[i] << " ";}// 输出: 0 10 20 30 40// 常量对象使用const IntArray carr(3);cout << carr[0]; // 使用const版本return 0;
}
#include <iostream>
using namespace std;class Data {
public:int value;Data(int v) : value(v) {}void print() { cout << "Value: " << value << endl; }
};class DataPtr {Data* ptr;
public:DataPtr(Data* p) : ptr(p) {}~DataPtr() { delete ptr; }// 重载->运算符Data* operator->() { return ptr; }const Data* operator->() const { return ptr; }
};int main() {DataPtr dp(new Data(42));dp->print(); // 实际调用: dp.operator->()->print()dp->value = 100; // 访问成员变量const DataPtr cdp(new Data(200));cdp->print(); // 使用const版本return 0;
}
跳转返回——多态
#include <iostream>
using namespace std;// 基类 Shape,表示形状
class Shape {protected:int width, height; // 宽度和高度public:// 构造函数,带有默认参数Shape(int a = 0, int b = 0) : width(a), height(b) { }// 虚函数 area,用于计算面积// 使用 virtual 关键字,实现多态virtual int area() {cout << "Shape class area: " << endl;return 0;}
};// 派生类 Rectangle,表示矩形
class Rectangle : public Shape {public:// 构造函数,使用基类构造函数初始化 width 和 heightRectangle(int a = 0, int b = 0) : Shape(a, b) { }// 重写 area 函数,计算矩形面积int area() override { cout << "Rectangle class area: " << endl;return width * height;}
};// 派生类 Triangle,表示三角形
class Triangle : public Shape {public:// 构造函数,使用基类构造函数初始化 width 和 heightTriangle(int a = 0, int b = 0) : Shape(a, b) { }// 重写 area 函数,计算三角形面积int area() override { cout << "Triangle class area: " << endl;return (width * height / 2); }
};// 主函数
int main() {Shape *shape; // 基类指针Rectangle rec(10, 7); // 矩形对象Triangle tri(10, 5); // 三角形对象// 将基类指针指向矩形对象,并调用 area 函数shape = &rec;cout << "Rectangle Area: " << shape->area() << endl;// 将基类指针指向三角形对象,并调用 area 函数shape = &tri;cout << "Triangle Area: " << shape->area() << endl;return 0;
}
相关文章:
2026《数据结构》考研复习笔记二(C++面向对象)
C面向对象 一、类二、继承三、重载运算符和重载函数四、多态代码示例 一、类 1.1类&对象 class classname//class是关键词,classname是类名 { Access specifiers://访问修饰符:private/public/protected Date members/variables;//变量 Member fun…...
【C++】12.list接口介绍
在C标准库中,std::list 是一个基于双向链表实现的顺序容器,它支持高效的插入和删除操作,但无法直接通过下标进行随机访问。以下是关于 std::list 的简单介绍: 核心特性 底层结构 双向链表实现,每个节点包含数据、前驱指…...
决策卫生问题:考公考编考研能补救高考选取职业的错误吗
对于决策者来说,“认识你自己”是一个永恒的主题;警惕认知中的缺陷,比什么都重要。在判断与决策问题上,管理者和专业人士往往都非常自信。人类远远不如我们想象的那么理性,人类的判断也远远不如我们想象的那么完美。在…...
考研系列-计算机网络-第一章、计算机网络体系结构
一、计算机网络概述 1.知识点总结 性能指标: 注意这个指标: 2.习题总结 (一)选择题 广域网点对点,局域网广播技术 (二)简答题 (1)概念性题目: (2)计算型题目 这个题目主要是注意两种交换方式: 电路交换:…...
状态模式:有限状态机在电商订单系统中的设计与实现
状态模式:有限状态机在电商订单系统中的设计与实现 一、模式核心:用状态切换驱动行为变化 在电商订单系统中,订单状态会随着用户操作动态变化:「已创建」的订单支付后变为「已支付」,发货后变为「已发货」࿰…...
nohup命令使用说明
文章目录 如何在后台运行程序呢?如何正常运行代码重定向呢?nohup: ignoring input 如何在后台运行程序呢? 使用nohup命令即可, nohup python dataset/ReferESpatialDataset.py >>dataset_20250417.log 2>&1 &n…...
使用原生button封装一个通用按钮组件
效果图 代码 <script lang"ts" setup> import { computed, ref, watch } from "vue";/*** 按钮属性接口*/ interface ButtonProps {/** 按钮类型:default(默认)/dark/plain/link */type?: "default" | "dark" | &q…...
osu ai 论文笔记 DQN
e https://theses.liacs.nl/pdf/2019-2020-SteeJvander.pdf Creating an AI for the Rhytm Game osu! 20年的论文 用监督学习训练移动模型100首歌能达到95准确率 点击模型用DQN两千首歌65准确率 V抖用的居然不是强化学习? 5,6星打96准确度还是有的东西的 这是5.…...
perf 的使用方法
perf的架构 1.perf event event are pure kernel counters, in this case they are called software events. Examples include: context-switches, minor-faults.events is the processor itself and its Performance Monitoring Unit (PMU). It provides a list of events …...
【MCP教程】Claude Desktop 如何连接部署在远程的remote mcp server服务器(remote host)
前言 最近MCP特别火热,笔者自己也根据官方文档尝试了下。 官方文档给的Demo是在本地部署一个weather.py,然后用本地的Claude Desktop去访问该mcp服务器,从而完成工具的调用: 但是,问题来了,Claude Deskto…...
使用python帮助艺术家完成角色动画和服装模型等任务
使用python帮助艺术家完成角色动画和服装模型等任务 声明:克隆项目第 1 步:准备 Python 环境第 2 步:安装依赖✅ 第 3 步:运行项目主入口报错:报错:**降级 Python 到 3.10 或 3.11**推荐版本: 创…...
Python爬虫实战:基于 Python Scrapy 框架的百度指数数据爬取研究
一、引言 1.1 研究背景 在当今信息时代,市场调研和趋势分析对于企业和研究机构至关重要。百度指数能够精准反映关键词在百度搜索引擎上的热度变化情况,为市场需求洞察、消费者兴趣分析等提供了极具价值的数据支持。通过对百度指数数据的爬取和分析,企业可以及时调整营销策略…...
【Python】python系列之函数闭包概念
目录 一、函数 二、闭包 2.1 概念 2.2闭包的应用场景 2.3代码实例 实例 1:简单计数器闭包 实例 2:带参数的闭包 实例 3:闭包用于数据封装和隐藏 一、函数 函数是实现特定功能的代码段的封装,在需要时可以多次调用函数来实…...
【React】什么是 Hook
useStateuseEffectuseRef 什么是hook?16.8版本出现的新特性。可以在不编写class组件的情况下使用state以及其它的React特性 为什么有hook?class组件很难提取公共的重用的代码,然后反复使用;不编写类组件也可以使用类组件的状态st…...
香港科技大学广州|智能交通学域博士招生宣讲会—北京理工大学专场
香港科技大学广州|智能交通学域博士招生宣讲会—北京理工大学专场 🕙时间:4月23日(星期三)16:00 🏠地点:北京理工大学中关村校区唯实报告厅 🔗报名链接:https://www.wj…...
食品计算—Coarse-to-fine nutrition prediction
🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(6):ながら 一边。。一边
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(6):ながら 一边。。一边 1、前言(1)情况说明(2)工程师的信仰 2、知识点(1)ながら1)一边。。一边2࿰…...
Electricity Market Optimization(VI) - 机组组合模型以及 Gurobi 求解
本文参考链接:link \hspace{1.6em} 机组组合问题在电力系统中非常重要,这个问题也是一个优化问题,研究的就是如何调度现有的机组,调度的对象是以煤炭、石油、天然气为燃料的火力发电机以及水力发电机等可预测处理的发电机组&#…...
LoRA个关键超参数:`LoRA_rank`(通常简称为 `rank` 或 `r`)和 `LoRA_alpha`(通常简称为 `alpha`)
LoRA (Low-Rank Adaptation) 中的两个关键超参数:LoRA_rank(通常简称为 rank 或 r)和 LoRA_alpha(通常简称为 alpha)。 LoRA 的核心思想是,在对大型预训练模型(如 LLM 或 Stable Diffusion&…...
Sql刷题日志(day3)
一、笔试 1、min(date_time):求最早日期 2、mysql中distinct不能与order by 连用,可以用group by去重 二、面试 1、SQL中如何利用replace函数统计给定重复字段在字符串中的出现次数 (length(all_string)-length(all_string,目标字符串,))/length(ta…...
【AI插件开发】Notepad++ AI插件开发实践:实现对话窗口功能
引言 之前的文章已经介绍实现了AI对话窗口,但只有个空壳,没有实现功能。本次将集中完成对话窗口的功能,主要内容为: 模型动态切换:支持运行时加载配置的AI模型列表交互式输入处理:实现多行文本输入与Ctrl…...
[GESP202409 二级] 小杨的 N 字矩阵 题解
#include<bits/stdc.h> #define int long long using namespace std; int m, a[55][55], sum; signed main(){cin >> m;for(int i 1; i < m; i ){a[i][1] 1;//第一列a[i][m] 1;//第m列sum ;a[i][sum] 1;//斜着的}for(int i 1; i < m; i ){for(int j 1;…...
第八章:探索新兴趋势:Agent 框架、产品与开源力量
引言 在前两章的实战中,我们已经掌握了如何使用 LangChain、LlamaIndex、AutoGen 和 CrewAI 这些主流框架来构建 AI Agent,无论是单个智能体还是协作的多 Agent 系统。然而,AI Agent 领域的发展日新月异,如同奔腾的河流ÿ…...
条款05:了解C++默默编写并调用哪些函数
目录 1.默认生成的函数 2.无法生成的情况 2.1当成员函数有引用 或者 被const修饰 2.2.operator在基类被私有 1.默认生成的函数 class empty {};//相当于class empty { public:empty(){ ... } // 构造函数empty(const empty& rhs) { ... }// 拷贝构造~empty(){ ... } //…...
Vue3 中封装函数实现加载图片加载失败兜底方案。
文章目录 Vue3 中使用动态加载图片并处理加载失败的情况实现思路代码实现代码解析注意事项扩展功能总结 Vue3 中使用动态加载图片并处理加载失败的情况 在开发 Vue3 应用时,我们经常会遇到需要动态加载图片的场景。例如,图片资源可能从后端获取…...
微机控制电液伺服汽车减震器动态试验系统
微机控制电液伺服汽车减震器动态试验系统,用于对汽车筒式减震器、减震器台架、驾驶室减震装置、发动机悬置软垫总成、发动机前置楔形支撑总成等的示功图试验、速度特性试验。 主要的技术参数: 1、最大试验力:5kN; 2、试验力测量精…...
如何简单几步使用 FFmpeg 将任何音频转为 MP3?
在多媒体处理领域,FFmpeg 以其强大的功能和灵活性而闻名。无论是视频编辑、音频转换还是流媒体处理,它都是专业人士和技术爱好者的首选工具之一。在这篇文章中简鹿办公将重点介绍如何使用 FFmpeg 进行音频格式转换,提供一些常用的转换方式&am…...
【软考-系统架构设计师】ATAM方法及效用树
软件架构设计中ATAM方法及效用树深度解析 一、ATAM方法核心框架与流程 ATAM(架构权衡分析方法)是由卡耐基梅隆大学提出的系统性架构评估方法,旨在通过多维度质量属性分析识别架构风险、敏感点与权衡点。其实施流程分为四阶段九步骤…...
2025第十七届“华中杯”大学生数学建模挑战赛题目B 题 校园共享单车的调度与维护问题完整成品正文33页(不含附录)文章思路 模型 代码 结果分享
校园共享单车运营优化与调度模型研究 摘 要 本研究聚焦校园共享单车点位布局、供需平衡、运营效率及故障车辆回收四大核心问题,通过构建一系列数学模型,系统分析与优化共享单车的运维体系。 针对问题一,我们建立了基于多时段观测的库存估算…...
React Native 0.79 稳定版发布,更快的工具、更多改进
React Native 0.79 已发布。此版本在多个方面进行了性能改进,并修复了一些漏洞。首先,得益于延迟哈希技术,Metro 的启动速度变快了,并且对包导出提供了稳定支持。由于 JS 包压缩方式的改变等原因,Android 的启动时间也…...
中国AI应用革命开启新纪元:从DeepSeek燎原到全栈生态崛起
当生成式AI的星火点燃华夏大地,一场由DeepSeek引发的智能革命正在重构中国产业版图。在这场算力与智慧的角逐中,全产业链的协同创新正在书写中国式AI进化的新范式。 一、全栈突围:AI基础设施生态全面升维 云端启航:头部云服务商…...
生物系统中的随机性及AI拓展
生物系统远非确定性的机器,而是本质上充满噪声的。这种随机性,或称偶然性,在塑造细胞行为和结果方面起着至关重要的作用。从基因表达到细胞命运决定,波动和不可预测的事件可以显著影响生物过程。理解和建模这种固有的变异性对于全…...
智能交响:EtherCAT转Profinet网关开启汽车自动化通信新纪元
在汽车制造行业,随着自动化程度的不断提升,设备之间的高效通信显得尤为重要。以吉利汽车西安制造基地为例,生产线中广泛应用了西门子PLC与机器人手臂等设备,这些设备分别采用了Profinet和EtherCAT通信协议。为实现不同协议设备之间…...
【2025“华中杯”大学生数学建模挑战赛】选题分析 A题 详细解题思路
目录 2025“华中杯”大学生数学建模挑战赛选题分析A题:晶硅片产销策略优化B题:校园共享单车的调度与维护问题C题:就业状态分析与预测D题:患者院内转运不良事件的分析与预测 A 题 晶硅片产销策略优化问题 1:月利润计算模…...
springboot整合阿里云百炼DeepSeek,实现sse流式打印
1.开通阿里云百炼,获取到key 官方文档地址 https://bailian.console.aliyun.com/?tabapi#/api/?typemodel&urlhttps%3A%2F%2Fhelp.aliyun.com%2Fdocument_detail%2F2868565.html 2.新建SpringBoot项目 <?xml version"1.0" encoding"UTF-8"?&g…...
JMeter中设置HTTPS请求
在JMeter中设置HTTPS请求,你可以按照以下步骤进行操作: 步骤一:添加线程组 打开JMeter后,右键点击“测试计划”,选择“添加” -> “线程(用户)” -> “线程组”。线程组用于定义虚拟用户…...
oracle数据库中,merge into 语句的功能与使用场景
oracle数据库中,merge into 语句的功能与使用场景 一、MERGE INTO 语句的作用 MERGE INTO 是ORACLE数据库 SQL 中的一种数据操作语句,它结合了 INSERT、UPDATE 和 DELETE 操作的功能,通常被称为"upsert"操作(update …...
极狐GitLab 安全文件管理功能介绍
极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 安全文件管理 (BASIC SELF) 在极狐GitLab 15.6 中 GA,功能标志 ci_secure_files 被移除。 您可以将最多 100 个…...
极狐GitLab CI/CD 流水线计算分钟数如何管理?
极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 计算分钟管理 (PREMIUM SELF) 在极狐GitLab 16.1 中,从 CI/CD 分钟数重命名为计算配额或计算分钟数。 管理员可…...
XCZU4CG‑2SFVC784I 赛灵思 FPGA XilinxZynq UltraScale+ MPSoC
XCZU4CG‑2SFVC784I 是 AMD Xilinx Zynq UltraScale MPSoC CG 系列中的入门级高性能 SoC FPGA,集成了双核 Arm Cortex‑A53 通用处理器与双核 Arm Cortex‑R5F 实时处理器,以及可编程逻辑(PL)资源。 异构处理系统 (PS) 应用处理…...
软考 中级软件设计师 考点知识点笔记总结 day13 数据库系统基础知识 数据库模式映像 数据模型
文章目录 数据库系统基础知识6.1 基本概念6.1.1 DBMS的特征与分类 6.2 数据库三级模式两级映像6.3 数据库的分析与设计过程6.4 数据模型6.4.1 ER模型6.4.2 关系模型 数据库系统基础知识 基本概念 数据库三级模式两级映像 数据库的分析与设计过程 数据模型 关系代数 数据库完整…...
视频监控EasyCVR视频汇聚平台接入海康监控摄像头如何配置http监听功能?
一、方案概述 本方案主要通过EasyCVR视频管理平台,实现报警信息的高效传输与实时监控。海康监控设备能通过HTTP协议将报警信息发送至指定的目的IP或域名,而EasyCVR平台则可以接收并处理这些报警信息,同时提供丰富的监控与管理功能࿰…...
【八大排序】冒泡、直接选择、直接插入、希尔、堆、归并、快速、计数排序
目录 一、排序的介绍二、排序算法的实现2.1 直接插入排序2.2 希尔排序2.3 直接选择排序2.4 堆排序2.5 冒泡排序2.6 快速排序2.7 归并排序2.8 比较排序算法的性能展示2.9 计数排序 个人主页<— 数据结构专栏<— 一、排序的介绍 我们的生活中有很多排序,比如像…...
AI在市场营销分析中的核心应用及价值,分场景详细说明
以下是 AI在市场营销分析中的核心应用及价值,分场景详细说明: 1. 客户行为分析与细分 AI技术应用: 机器学习:分析用户点击、购买、浏览等行为数据,识别消费模式(如高频购买时段、偏好品类)。聚…...
本地Ubuntu轻松部署高效性能监控平台SigNoz与远程使用教程
目录 ⛳️推荐 前言 1.关于SigNoz 2.本地部署SigNoz 3.SigNoz简单使用 4. 安装内网穿透 5.配置SigNoz公网地址 6. 配置固定公网地址 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击…...
解析检验平板:设备还是非设备?深入了解其功能与应用(北重铸铁平台厂家)
检验平板通常被归类为设备,因为它们具有特定的功能,并且被用于测试和评估其他设备或产品的性能和质量。检验平板通常具有平坦的表面,用于放置要进行测试或检验的物品。它们可以用于测量尺寸、形状、平整度、表面光洁度等参数。 检验平板的应…...
【创新实训个人博客】前端实现
一、 目标设定与初步改造 核心目标: 对 visualizer 的前端界面 (index.html, style.css) 进行现代化改造。 基础样式: 初始化页面整体风格,为 body 添加了动态渐变背景;初步调整了页面顶部导航按钮、信息提示块 (Log Visualizer) 及底部任务…...
vue3、原生html交互传值
1、引入原生html 将该文件放到public目录下,在vue项目里面使用iframe 引入该文件,监听load事件(load事件在<iframe>的内容完全加载完成之后触发) <iframeload"onIframeLoad"style"width: 454px; height: 480px"src".…...
于 Jupyter 天地,借 NumPy 之手编织数据锦缎
引言 NumPy是Python科学计算的核心库之一,提供了强大的多维数组对象和丰富的数学函数,是数据科学、机器学习等领域不可或缺的工具。结合Jupyter Notebook的交互式环境,NumPy的使用变得更加直观和高效。本文将介绍如何在Jupyter中充分利用NumP…...
Mac idea WordExcel等文件git modify 一直提示修改状态
CRLF LF CR 换行符自动转换问题 查看状态:git config --global --list Mac需要开启,window下需要关闭 关闭命令:git config --global core.autocrlf false 命令解释: autocrlf true 表示要求git在提交时将crlf转换为lf&a…...