STL-常用算法 遍历/查找/排序/拷贝和替换/算数生成/集合算法

STL常用算法

常用的遍历算法

for_each

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>void myPrint(int v)
{cout << v << "  ";
}class MyPrint
{
public:void operator()(int v){cout << v << "  ";}
};void test01()
{vector<int> v;for (int i = 0; i < 10; i++){v.push_back(i);}// 普通函数遍历for_each(v.begin(),v.end(),myPrint);cout << endl;// 函数对象遍历for_each(v.begin(), v.end(), MyPrint());cout << endl;
}
int main()
{test01();system("pause");return 0;
}

transform

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>class Transform
{
public:int operator()(int v){return v + 100;}
};class Print
{
public:void operator()(int v){cout << v << "  ";}};
void test01()
{vector<int> v;for (int i = 0; i < 10; i++){v.push_back(i);}vector<int> v2;//目标容器v2.resize(v.size());//提前开辟空间transform(v.begin(), v.end(), v2.begin(), Transform());for_each(v2.begin(), v2.end(), Print());cout << endl;
}
int main()
{test01();system("pause");return 0;
}

常用的查找算法

对于自定义数据类型,一般需要重载==号 operator==

find

自定义数据类型

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
#include<string>// 内置数据类型
void test01()
{vector<int> v;for (int i = 0; i < 10; i++){v.push_back(i);}vector<int>::iterator pos = find(v.begin(), v.end(), 5);if (pos == v.end()){cout << "没有找到" << endl;}else{cout << "找到了" << *pos << endl;}
}class Person
{
public:bool operator==(Person p){if (this->name == p.name && this->age == p.age){return true;}return false;}Person(string name, int age){this->name = name;this->age = age;}string name;int age;
};// 自定义数据类型
void test02()
{vector<Person> v;v.push_back(Person("111",10));v.push_back(Person("222", 20));v.push_back(Person("333", 30));v.push_back(Person("444", 40));v.push_back(Person("555", 50));v.push_back(Person("666", 60));v.push_back(Person("777", 70));vector<Person>::iterator pos = find(v.begin(), v.end(), Person("222", 20));if (pos == v.end()){cout << "没有找到" << endl;}else{cout << "找到了" << endl<< "姓名:" << pos->name << "  年龄:" << pos->age << endl;}
}
int main()
{// test01();test02();system("pause");return 0;
}

find_if

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
#include<string>class GreaterFive
{
public:bool operator()(int v){return v > 8;}
};
// 内置数据类型
void test01()
{vector<int> v;for (int i = 0; i < 10; i++){v.push_back(i);}vector<int>::iterator pos = find_if(v.begin(),v.end(), GreaterFive());if (pos == v.end()){cout << "没有找到" << endl;}else{cout << "找到了" << *pos << endl;}
}class Person
{
public:Person() {};bool operator()(Person p){return p.age > 50;}Person(string name, int age){this->name = name;this->age = age;}string name;int age;
};// 自定义数据类型
void test02()
{vector<Person> v;v.push_back(Person("111", 10));v.push_back(Person("222", 20));v.push_back(Person("333", 30));v.push_back(Person("444", 40));v.push_back(Person("555", 50));v.push_back(Person("666", 60));v.push_back(Person("777", 70));vector<Person>::iterator pos = find_if(v.begin(), v.end(), Person());if (pos == v.end()){cout << "没有找到" << endl;}else{cout << "找到了" << endl<< "姓名:" << pos->name << "  年龄:" << pos->age << endl;}
}
int main()
{// test01();test02();system("pause");return 0;
}

adjacent_find

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
#include<string>void test01()
{vector<int> v;v.push_back(0);v.push_back(1);v.push_back(2);v.push_back(1);v.push_back(3);v.push_back(5);v.push_back(5);v.push_back(0);vector<int>::iterator pos = adjacent_find(v.begin(), v.end());if (pos == v.end()){cout << "没有找到" << endl;}else{cout << "找到了" << *pos << endl;}
}
int main()
{test01();system("pause");return 0;
}

binary_search

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
#include<string>void test01()
{vector<int> v;for (int i = 0; i < 10; i++){v.push_back(i);}// 必须是有序的序列才能使用二分查找bool ret = binary_search(v.begin(), v.end(), 5);if (!ret){cout << "没有找到" << endl;}else{cout << "找到了" <<endl;}
}
int main()
{test01();system("pause");return 0;
}

count

第三个参数中放的是统计的元素,自定义数据类型,元素内要放operator==

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
#include<string>// 内置数据类型
void test01()
{vector<int> v;for (int i = 0; i < 10; i++){v.push_back(i);}v.push_back(5);v.push_back(5);v.push_back(5);int ret = count(v.begin(), v.end(), 5);cout << ret << endl;
}class Person
{
public:bool operator==(Person p){return this->age == p.age;}//bool operator==(Person p)//{//	if (this->name == p.name && this->age == p.age)//	{//		return true;//	}//	return false;//}Person(string name, int age){this->name = name;this->age = age;}string name;int age;
};// 自定义数据类型
void test02()
{vector<Person> v;v.push_back(Person("111", 10));v.push_back(Person("222", 40));v.push_back(Person("333", 30));v.push_back(Person("444", 40));v.push_back(Person("555", 40));v.push_back(Person("666", 40));v.push_back(Person("777", 70));int ret = count(v.begin(), v.end(), Person("888",40));cout << ret << endl;}
int main()
{// test01();test02();system("pause");return 0;
}

count_if

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
#include<string>class Greater5
{
public:bool operator()(int v){return v > 5;}
};
// 内置数据类型
void test01()
{vector<int> v;for (int i = 0; i < 15; i++){v.push_back(i);}v.push_back(5);v.push_back(5);v.push_back(5);cout << count_if(v.begin(), v.end(), Greater5()) << endl;
}class Person
{
public:Person() {};bool operator()(Person p){return p.age > 10;}bool operator==(Person p){return this->age == p.age;}//bool operator==(Person p)//{//	if (this->name == p.name && this->age == p.age)//	{//		return true;//	}//	return false;//}Person(string name, int age){this->name = name;this->age = age;}string name;int age;
};// 自定义数据类型
void test02()
{vector<Person> v;v.push_back(Person("111", 10));v.push_back(Person("222", 40));v.push_back(Person("333", 30));v.push_back(Person("444", 40));v.push_back(Person("555", 40));v.push_back(Person("666", 40));v.push_back(Person("777", 70));int ret = count_if(v.begin(), v.end(), Person());cout << ret << endl;}
int main()
{// test01();test02();system("pause");return 0;
}

常用排序算法

sort

自定义类型

https://blog.csdn.net/qq_41575507/article/details/105936466

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
#include<functional>void print(int v)
{cout << v << "  ";
}
void test01()
{vector<int> v;for (int i = 0; i < 15; i++){v.push_back(i);}v.push_back(5);v.push_back(5);v.push_back(5);// 默认从大到小sort(v.begin(), v.end());for_each(v.begin(), v.end(), print);cout << endl;sort(v.begin(), v.end(),greater<int>());for_each(v.begin(), v.end(), print);cout << endl;
}
int main()
{test01();system("pause");return 0;
}

random_shuffle

z自定义数据类型的乱序使用

和内置数据类型同样使用

https://learn.microsoft.com/zh-cn/troubleshoot/developer/visualstudio/cpp/libraries/use-random-shuffle-stl

pointer_to_unary_function类

作用:将一元函数指针转换为灵活的一元函数。

https://learn.microsoft.com/zh-cn/previous-versions/047wx24c(v=vs.120)

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
#include<functional>void print(int v)
{cout << v << "  ";
}
void test01()
{vector<int> v;for (int i = 0; i < 15; i++){v.push_back(i);}random_shuffle(v.begin(),v.end());for_each(v.begin(), v.end(), print);cout << endl;
}
int main()
{srand((unsigned int)time(NULL));test01();system("pause");return 0;
}

merge

自定义数据类型还没高明白

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
#include<string>void print(int v)
{cout << v << "  ";
}
// 内置数据类型
void test01()
{vector<int> v;vector<int> v2;for (int i = 0; i < 10; i++){v.push_back(i);v2.push_back(i + 2);}vector<int> vTarget;vTarget.resize(v.size() + v2.size());// 合并后仍然是有序的merge(v.begin(), v.end(), v2.begin(), v2.end(), vTarget.begin());for_each(vTarget.begin(),vTarget.end(), print);cout << endl;
}class Person
{
public:Person() {};bool operator<(const Person& p)const{return false;}bool operator==(Person p){if (this->name == p.name && this->age == p.age){return true;}return false;}Person(string name, int age){this->name = name;this->age = age;}string name;int age;
};//class Compare
//{
//public:
//	bool operator()(Person p1, Person p2)
//	{
//		return p1.age > p2.age;
//	}
//};
//void print2(Person p)
//{
//	cout << "姓名:\t" << p.name << "\t"
//		<< "年龄:" << p.age << endl;
//}自定义数据类型
//void test02()
//{
//	vector<Person> v;
//	v.push_back(Person("111", 20));
//	v.push_back(Person("222", 20));
//	v.push_back(Person("333", 30));
//	v.push_back(Person("444", 40));
//	v.push_back(Person("555", 50));
//	v.push_back(Person("666", 60));
//	v.push_back(Person("777", 70));
//	vector<Person> v2;
//	v2.push_back(Person("888", 30));
//	v2.push_back(Person("101", 40));
//	v2.push_back(Person("999", 90));
//
//	vector<Person> vTarget;
//	vTarget.resize(v.size()+v2.size());
//
//	merge(v.begin(), v.end(), v2.begin(), v2.end(), vTarget.begin(), Person());
//
//	for_each(vTarget.begin(), vTarget.end(), print2);
//	cout << endl;
//}
int main()
{test01();//test02();system("pause");return 0;
}

reverse

常用的拷贝和替换算法

copy

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
void print(int v)
{cout << v << "  ";
}
void test01()
{vector<int> v;for (int i = 0; i < 10; i++){v.push_back(i);}for_each(v.begin(), v.end(), print);cout << endl;vector<int> v2;v2.resize(v.size());copy(v.begin(),v.end(),v2.begin());for_each(v2.begin(), v2.end(), print);cout << endl;
}
int main()
{test01();system("pause");return 0;
}

replace

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>class Print
{
public:void operator()(int v){cout << v << "  ";}
};
void test01()
{vector<int> v;v.push_back(10);v.push_back(20);v.push_back(30);v.push_back(20);v.push_back(20);v.push_back(60);v.push_back(80);cout << "替换前" << endl;for_each(v.begin(),v.end(), Print());cout << endl;replace(v.begin(),v.end(),20,22);for_each(v.begin(), v.end(), Print());cout << endl;}
int main()
{test01();system("pause");return 0;
}

replace_if

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>class Print
{
public:void operator()(int v){cout << v << "  ";}
};class greater30
{
public:bool operator()(int v){return v >= 30;}
};
void test01()
{vector<int> v;v.push_back(10);v.push_back(20);v.push_back(30);v.push_back(20);v.push_back(20);v.push_back(60);v.push_back(80);cout << "替换前" << endl;for_each(v.begin(), v.end(), Print());cout << endl;cout << "替换后" << endl;replace_if(v.begin(), v.end(), greater30(), 11);for_each(v.begin(), v.end(), Print());cout << endl;}
int main()
{test01();system("pause");return 0;
}

swap

两个容器必须同一种类型

大小可以不一样

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>class Print
{
public:void operator()(int v){cout << v << "  ";}
};void test01()
{vector<int> v;v.push_back(10);v.push_back(20);v.push_back(30);v.push_back(20);v.push_back(20);v.push_back(60);v.push_back(80);vector<int> v2;v2.push_back(111);cout << "替换前" << endl;for_each(v.begin(), v.end(), Print());cout << endl;for_each(v2.begin(), v2.end(), Print());cout << endl;cout << "替换后" << endl;swap(v, v2);for_each(v.begin(), v.end(), Print());cout << endl;for_each(v2.begin(), v2.end(), Print());cout << endl;}
int main()
{test01();system("pause");return 0;
}

常用算数生成算法

numeric 英文 数字的

accumulate

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
using namespace std;
#include<vector>
#include<numeric>
#include<string>void test01()
{vector<int> v;for (int i = 0; i < 10; i++){v.push_back(i);}cout << accumulate(v.begin(), v.end(), 0) << endl;}
int main()
{test01();system("pause");return 0;
}

对于自定义数据类型的应用

https://www.jb51.net/article/242034.htm

fill

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>class Print
{
public:void operator()(int v){cout << v << "  ";}
};void test01()
{vector<int> v;v.resize(10);for_each(v.begin(), v.end(), Print());cout << endl;fill(v.begin(), v.end(), 100);for_each(v.begin(), v.end(), Print());cout << endl;
}
int main()
{test01();system("pause");return 0;
}

常用的集合算法

set_intersection

返回交集的最后一个元素的下一个位置(我的是正确的,图片里是错误的)

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>class Print
{
public:void operator()(int v){cout << v << "  ";}
};void test01()
{vector<int> v;vector<int> v2;for (int i = 0; i < 10; i++){v.push_back(i);v2.push_back(i + 5);}vector<int> v3;v3.resize(min(v.size(), v2.size()));vector<int>::iterator pos = set_intersection(v.begin(),v.end(),v2.begin(),v2.end(), v3.begin());// pos 指向最后一个元素的下一个位置cout << *pos << endl;for_each(v3.begin(), pos, Print());cout << endl;
}
int main()
{test01();system("pause");return 0;
}

ste_union

返回交集的最后一个元素的下一个位置(我的是正确的,图片里是错误的)

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>class Print
{
public:void operator()(int v){cout << v << "  ";}
};void test01()
{vector<int> v;vector<int> v2;for (int i = 0; i < 10; i++){v.push_back(i);v2.push_back(i + 5);}vector<int> v3;v3.resize(v.size()+v2.size());vector<int>::iterator pos = set_union(v.begin(), v.end(), v2.begin(), v2.end(), v3.begin());// pos 指向最后一个元素的下一个位置cout << *pos << endl;for_each(v3.begin(), pos, Print());cout << endl;
}
int main()
{test01();system("pause");return 0;
}

set_difference

求谁的差集把谁的迭代器放前面

返回差集的最后一个元素的下一个位置(我的是正确的,图片里是错误的)

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>class Print
{
public:void operator()(int v){cout << v << "  ";}
};void test01()
{vector<int> v;vector<int> v2;for (int i = 0; i < 10; i++){v.push_back(i);v2.push_back(i + 5);}vector<int> v3;v3.resize(max(v.size(),v2.size()));vector<int>::iterator pos = set_difference(v.begin(), v.end(), v2.begin(), v2.end(), v3.begin());// pos 指向最后一个元素的下一个位置// cout << *pos << endl;cout << "v的差集为:" << endl;for_each(v3.begin(), pos, Print());cout << endl;vector<int>::iterator pos2 = set_difference(v2.begin(), v2.end(), v.begin(), v.end(), v3.begin());cout << "v2的差集为:" << endl;for_each(v3.begin(), pos2, Print());cout << endl;}int main()
{test01();system("pause");return 0;
}

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

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

相关文章

产品经理需要了解的AI模型

随着人工智能技术的迅猛发展&#xff0c;AI已经成为各行各业不可或缺的一部分。对于产品经理而言&#xff0c;了解AI模型不仅能促进产品的创新&#xff0c;还能帮助我们更好地理解用户需求&#xff0c;提升产品价值。 下面我将详细介绍四类重要的AI模型——自然语言处理&#…

【云原生安全篇】一文掌握Harbor集成Trivy应用实践

【云原生安全篇】一文掌握Harbor集成Trivy应用实践 目录 1 概念 1.1 什么是 Harbor 和 Trivy&#xff1f; 1.1.1 Harbor 1.1.2 Trivy 1.2 Harbor 与 Trivy 的关系 Trivy 在 Harbor 中的作用&#xff1a; 1.3 镜像扫描工作流程 2 实战案例&#xff1a;在Harbor 配置 Trivy …

2018年国赛高教杯数学建模D题汽车总装线的配置问题解题全过程文档及程序

2018年国赛高教杯数学建模 D题 汽车总装线的配置问题 一&#xff0e;问题背景   某汽车公司生产多种型号的汽车&#xff0c;每种型号由品牌、配置、动力、驱动、颜色5种属性确定。品牌分为A1和A2两种&#xff0c;配置分为B1、B2、B3、B4、B5和B6六种&#xff0c;动力分为汽油…

Golang | Leetcode Golang题解之第416题分割等和子集

题目&#xff1a; 题解&#xff1a; func canPartition(nums []int) bool {n : len(nums)if n < 2 {return false}sum, max : 0, 0for _, v : range nums {sum vif v > max {max v}}if sum%2 ! 0 {return false}target : sum / 2if max > target {return false}dp …

fastadmin 根据选择数据来传参给selectpage输入框

文章目录 js代码php代码&#xff1a;完结 js代码 $(document).on(change,#table .bs-checkbox [type"checkbox"],function(){let url$(#chuancan).attr(data-url)urlurl.split(?)[0]let idsTable.api.selectedids(table)if(ids.length){let u_id[]ids.forEach(eleme…

Seata学习笔记

目录 Seata的三大角色 角色 相关流程 相关事务模式 AT 模式&#xff08;默认模式&#xff09; 概述 整体机制 分析 XA 模式 概述 机制 分析 TCC 模式 概述 机制 分析 SAGA 模式 概述 机制 分析 参考&#xff1a; Seata的三大角色 角色 TC (Transaction Co…

虚拟机:4、配置12.5的cuda和gromacs

前言&#xff1a;本机环境是win11&#xff0c;通过wsl2安装了ubuntu实例并已实现gpu直通&#xff0c;现在需要下载12.5的cuda 一、查看是否有gpu和合适的cuda版本 在ubuntu实例中输入 nvidia-smi输出如下&#xff1a; 说明该实例上存在gpu驱动&#xff0c;且适合的CUDA版本…

智能新突破:AIOT 边缘计算网关让老旧水电表图像识别

数字化高速发展的时代&#xff0c;AIOT&#xff08;人工智能物联网&#xff09;技术正以惊人的速度改变着我们的生活和工作方式。而其中&#xff0c;AIOT 边缘计算网关凭借其强大的功能&#xff0c;成为了推动物联网发展的关键力量。 这款边缘计算网关拥有令人瞩目的 1T POS 算…

VS Code 技巧

在编程世界里&#xff0c;工具的好坏取决于使用者的水平。Visual Studio Code&#xff08;VS Code&#xff09;就像一把锋利的刀&#xff0c;它功能强大&#xff0c;但需要熟练的技巧才能发挥出色。然而&#xff0c;对于初学者来说&#xff0c;它可能显得有些复杂&#xff0c;因…

9.Branch-and-Bound 方法

Branch-and-Bound 方法 Branch-and-Bound&#xff08;分支限界&#xff09;是一种用于解决优化问题的算法框架&#xff0c;尤其适用于组合优化问题&#xff0c;如整数规划、旅行商问题&#xff08;TSP&#xff09;、指派问题等。该方法通过系统地搜索解空间树来找到问题的最优…

[spring]springboot日志

文章目录 一. 日志的用途二. 打印日志三. 日志框架门面模式(外观模式)SLF4J框架介绍 四. 日志格式日志级别配置日志级别日志持久化配置日志文件分割配置日志格式 五. 更简单的日志输出 一. 日志的用途 二. 打印日志 得到日志对象: 需要使用日志工厂LoggerFactory RestControl…

【小程序】uniapp自定义图标组件可动态更换svg颜色

组件描述 通过图标名称加载对应svg&#xff0c;size参数调整图标大小&#xff0c;color参数调整图标颜色 解决思路&#xff1a; 存svg获svg&#xff0c;对象方式正则替换svg的fill值&#xff0c;不改变源文件&#xff0c;通过base64直接加载缓存svg源文件&#xff0c;避免重…

聚铭下一代智慧安全运营中心荣获CNNVD兼容性资质证书

近日&#xff0c;聚铭网络旗下安全产品——聚铭下一代智慧安全运营中心正式通过了国家信息安全漏洞库&#xff08;CNNVD&#xff09;兼容性认证测试&#xff0c;荣获国家信息安全漏洞库兼容性资质证书。 关于CNNVD兼容性 国家信息安全漏洞库&#xff08;CNNVD&#xff09;是…

2003-2022年各省区域创新能力评价相关指标数据(报告年份2003-2022年)

2003-2022年各省区域创新能力相关指标数据&#xff08;报告年份2003-2022年&#xff09; 1、来源&#xff1a;2003-2022年中国区城创新能力评价报告 2、指标&#xff1a;综合值、知识创造综合指标、研究开发投人综合指标、专利综合指标、科研论文综合指标、知识获取综合指标、…

CSS02-字体属性、文本属性

一、字体属性 CSS Fonts(字体)属性用于定义字体系列、大小、粗细、和文字样式(如斜体)。 1-1、font-family属性 当font-family有多个值的时候&#xff0c;代码会依次查找当前系统中存在哪种字体&#xff0c;有则使用&#xff0c;没有则查找下一个字体。 1-2、font-size属性 1-3…

解决ArmDS Fast Models 中部分内核无法上电的问题

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决ArmDS Fast Models 中部分内核无法上电的问题。 2、 问题场景 在调用ArmDS的Fast Models中的Cortex-A55的模型&#xff0c;只有Core 0是上电状态&#xff0c;而Core 1处于掉电状态&#xff0c;如图2-1所示&…

AI大模型日报#0923:李飞飞创业之后首个专访、华为云+腾讯音乐发布昇腾适配方案

导读&#xff1a;AI大模型日报&#xff0c;爬虫LLM自动生成&#xff0c;一文览尽每日AI大模型要点资讯&#xff01;目前采用“文心一言”&#xff08;ERNIE-4.0-8K-latest&#xff09;、“智谱AI”&#xff08;glm-4-0520&#xff09;生成了今日要点以及每条资讯的摘要。欢迎阅…

基于单片机无线智能报警系统的设计

文章目录 前言资料获取设计介绍功能介绍设计程序具体实现截图设计获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对…

计算机毕业设计 基于Python的荣誉证书管理系统 Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

2024全球超模大赛(北京|山东|内蒙三城联动)顺利举办

近日&#xff0c;2024 全球超模大赛&#xff08;北京|山东|内蒙&#xff09;三城联动暨新国潮文化赛事主题发布会在紫薇美力集团国贸鲁采赋盛大举行。此次发布会旨在鼓励优质模特共同传播中国传统文化&#xff0c;让其在全球范围内绽放光彩&#xff0c;展现中国人的骄傲与风采&…