深度学习c++资源库:vector容器,蓝桥杯常用算法sort,unique(排序+去重)
vector容器
1.基本概念
<vector>
是 STL 中的一个容器类,不同于普通数组的静态空间,vector可以动态扩展。
动态扩展:并不是在原空间连接新空间,而是找到更大的内存空间,将原数据拷贝到新空间,释放原空间。
<vector>
是一个序列容器,它允许用户在容器的末尾快速地添加或删除元素。与数组相比,<vector>
提供了更多的功能,如自动调整大小、随机访问等。
2.声明与初始化
<vector>
需要指定元素类型,可通过多种方式进行初始化:
#include <iostream>
#include <vector>
using namespace std;
//声明vector容器
int main() {vector<int> vec1; // 空的vectorvector<int> vec2(5); // 长度为5的vector,元素默认初始化vector<int> vec3(5, 10); // 长度为5的vector,元素值为10vector<int> vec4 = {1, 2, 3, 4}; // 使用初始化列表初始化return 0;
}
3.<vector>中常用的成员函数
下面是一个使用 <vector>
的简单示例:
#include <iostream>
#include <vector>
using namespace std;int main() {// 声明一个存储整数的 vectorvector<int> numbers;// 添加元素numbers.push_back(10);numbers.push_back(20);numbers.push_back(30);// 输出 vector 中的元素cout << "Vector contains: ";for (int i = 0; i < numbers.size(); ++i) {cout << numbers[i] << " ";}cout << endl;// 添加更多元素numbers.push_back(40);numbers.push_back(50);// 再次输出 vector 中的元素cout << "After adding more elements, vector contains: ";for (int i = 0; i < numbers.size(); ++i) {cout << numbers[i] << " ";}cout << endl;// 访问特定元素cout << "The first element is: " << numbers[0] << endl;// 清空 vectornumbers.clear();// 检查 vector 是否为空if (numbers.empty()) {cout << "The vector is now empty." << endl;}return 0;
}
4.三种遍历容器中元素的方式
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;void Myprint(int val){cout<<val<<endl;
}void test1(){vector<int> v;//向容器中存放数据v.push_back(10);v.push_back(20);v.push_back(30);v.push_back(40);//每一个容器都有自己的迭代器,迭代器是用来遍历容器中的元素//v.begin()返回迭代器,指向容器第一个元素 //v.end()返回迭代器,指向最末元素的下一个位置 //vector<int>::iteratorvector<int>::iterator pbegin=v.begin();vector<int>::iterator pend=v.end();//第一种遍历方法while (pbegin != pend){cout<<*pbegin<<endl;pbegin++;} //第二种遍历方法for(vector<int>::iterator it=v.begin();it!=v.end();it++){cout<<*it<<endl;} //第三种遍历方法//使用for_each算法,头文件 algorithmfor_each(v.begin(),v.end(),Myprint);
}
int main(){test1();return 0;
}
5.示例
-
基本操作
#include <iostream>
#include <vector>
using namespace std;int main() {vector<int> vec = {1, 2, 3, 4, 5};//声明vector容器,列表初始化// 输出所有元素cout << "Vector elements: ";for (int i = 0; i < vec.size(); ++i) {cout << vec[i] << " ";}cout << endl;// 获取第一个和最后一个元素cout << "First element: " << vec.front() << endl;cout << "Last element: " << vec.back() << endl;return 0;
}
-
容量大小
#include <iostream>
#include <vector>
using namespace std;void printvector(vector<int> &v1){for(vector<int>::iterator it=v1.begin();it!=v1.end();it++){cout<<*it<<" ";}
}void test1(){vector<int> v1;for(int i=0;i<10;i++){v1.push_back(i);}printvector(v1);//判断容器是否为空if(v1.empty()){cout<<"v1为空"<<endl;} else{cout<<"v1不为空"<<endl;cout<<"v1的容量为"<<v1.capacity()<<endl;cout<<"v1的大小为"<<v1.size()<<endl;}//重新指定大小v1.resize(15);//如果重新指定的比原来长,默认用0填充。也可以指定默认填充值printvector(v1); v1.resize(5);//如果重新指定的比原来短,超出的部分删除掉printvector(v1);
}
int main(){test1();return 0;
}
-
插入删除
#include <iostream>
#include <vector>
using namespace std;//遍历容器中的元素
void printvector(vector<int> &v){for(vector<int>::iterator it=v.begin();it!=v.end();it++){cout<< *it <<" ";}cout<<endl;
}void test1(){vector<int>v;//尾插插入元素v.push_back(10); v.push_back(20);v.push_back(30);v.push_back(40);v.push_back(50);printvector(v);//尾删v.pop_back();printvector(v);//insert插入 v.insert(v.begin(),100);printvector(v);v.insert(v.begin(),2,100);printvector(v); //删除v.erase(v.begin());printvector(v);
}
int main(){void test1();return 0;
}
-
互换容器
#include <iostream>
#include <vector>
using namespace std;
void printvector(vector<int> &v){for(vector<int>::iterator it=v.begin();it!=v.end();it++){cout<< *it <<" ";}cout<<endl;
}void test1(){vector<int>v1;for(int i=0;i<10;i++){v1.push_back(i);}printvector(v1);vector<int>v2;for(int i=10;i>0;i--){v2.push_back(i);}printvector(v2);//互换v1.swap(v2);printvector(v1);printvector(v2);
}
int main(){test1();return 0;
}
-
预留空间
#include <iostream>
#include <vector>
using namespace std;int main() {vector<int> vec;vec.reserve(10); // 预留容量,避免频繁分配内存for (int i = 0; i < 10; ++i) {vec.push_back(i);cout << "Capacity after push_back(" << i << "): " << vec.capacity() << endl;}return 0;
}
6.vector容器实战+蓝桥杯常用技巧排序,去重
#include <iostream>
#include <vector>
#include <algorithm> // 包含sort算法
using namespace std;int main() {vector<int> nums = {3, 1, 4, 1, 5, 9, 2, 6};// 排序+去重(蓝桥杯常用技巧)sort(nums.begin(), nums.end());auto last = unique(nums.begin(), nums.end());nums.erase(last, nums.end());// 遍历输出(C++11范围for)for (int num : nums) {cout << num << " ";}return 0;
}
sort算法
sort(nums.begin(), nums.end()); :调用 sort 算法对 nums 容器中的元素进行排序。 排序后, nums 中的元素会按照升序排列。(sort函数会默认使用小于运算符<来确定元素的顺序。)
nums.begin() 返回指向容器第一个元素的迭代器, nums.end() 返回指向容器最后一个元素的下一个位置的迭代器。即左开右闭区间【nums.begin( ) , nums.end( ))
升序排列示例如下:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;int main() {// 对vector<int>进行排序vector<int> nums = {5, 2, 8, 1, 9, 3, 7, 4, 6};sort(nums.begin(), nums.end());cout << "升序排序结果: ";for (int num : nums) {cout << num << " ";}cout << endl;return 0;
}
降序排列示例如下:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;bool compare(int a, int b) {return a > b; // 降序比较函数
}int main() {// 使用自定义比较函数进行降序排序vector<int> nums2 = {5, 2, 8, 1, 9, 3, 7, 4, 6};sort(nums2.begin(), nums2.end(), compare);cout << "降序排序结果: ";for (int num : nums2) {cout << num << " ";}cout << endl;return 0;
}
unique算法
C++中,unique() 函数用于去除容器或数组中相邻元素之间重复出现的元素。因此,在使用 unique() 函数之前,必须先对数组或容器进行排序。此外,unique() 函数的返回值是去重后序列的新末尾地址。
auto last = unique(nums.begin( ), nums.end( ) ); nums.begin( ) 返回指向容器第一个元素的迭代器, nums.end( ) 返回指向容器最后一个元素的下一个位置的迭代器。即左开右闭区间【nums.begin( ) , nums.end( ))
unique 算法会遍历这个区间,将相邻的重复元素中除了第一个之外的其他元素移动到序列的后面。它不会真正删除元素,而是返回一个迭代器,指向去重后新序列的逻辑末尾(即最后一个不重复元素的下一个位置)。在代码中,这个返回的迭代器被赋值给 last 。
例如,假设 nums 容器中的元素初始为 {3, 1, 2, 2, 3, 3, 1} ,排序后变为 {1, 1, 2, 2, 3, 3, 3} ,经过 unique 算法处理后,容器中的元素可能变为 {1, 2, 3, 2, 3, 3, 1} (其中 1 、 2 、 3 是不重复的元素,后面的 2 、 3 、 1 是原来重复的元素,但位置被移动了), last 迭代器指向 3 后面的那个 2 的位置。
nums.erase(last, nums.end()); 这行代码使用 erase 成员函数,根据 unique 算法返回的 last 迭代器,删除容器中超出新逻辑末尾的元素,真正实现了去重的效果。以上面的例子来说,执行完这行代码后, nums 容器中的元素就变为 {1, 2, 3} ,完成了对原始序列的去重操作。
for (元素类型 元素变量 : 容器或数组)
元素类型 是容器或数组中存储的元素的数据类型
元素变量 是一个临时变量,用于在每次循环迭代时存储容器或数组中的一个元素, 容器或数组是要遍历的对象。
它简化了对容器(如 vector 、 array 等)或数组中元素的遍历操作。在 for (int num : nums) 中, int 是 nums 容器中元素的类型(因为 nums 是 vector<int> 类型,存储的是整数), num 是一个临时变量,用于在每次循环中存储 nums 中的一个元素, nums 是要遍历的 vector 容器。
相关文章:
深度学习c++资源库:vector容器,蓝桥杯常用算法sort,unique(排序+去重)
vector容器 1.基本概念 <vector> 是 STL 中的一个容器类,不同于普通数组的静态空间,vector可以动态扩展。 动态扩展:并不是在原空间连接新空间,而是找到更大的内存空间,将原数据拷贝到新空间,释放…...
Postgresql-重置统计信息(reset statistics)
文章目录 理解 PostgreSQL 中的 pg_stat_resetpg_stat_reset 的作用与使用时机pg_stat_reset 所需权限PostgreSQL 重置统计信息的方法重置整个database重置特定表的统计重置特定function的统计重置Statistics Collector:重置 WAL(Write-Ahead Logging)统…...
【Uniapp-Vue3】导入uni-id用户体系
在uniapp官网的uniCloud中下载uni-id用户体系 或者直接进入加载,下载地址:uni-id-pages - DCloud 插件市场 进入以后下载插件,打开HbuilderX 选中项目,点击确定 点击跳过 点击合并 右键uniCloud文件夹下的database文件夹&#x…...
【前沿探索篇七】【DeepSeek自动驾驶:端到端决策网络】
第一章 自动驾驶的"感官革命":多模态神经交响乐团 1.1 传感器矩阵的量子纠缠 我们把8路摄像头+4D毫米波雷达+128线激光雷达的融合称为"传感器交响乐",其数据融合公式可以简化为: def sensor_fusion(cam, radar, lidar):# 像素级特征提取 (ResNet-152…...
Staruml软件的介绍安装uml类图的绘制流程
文章目录 1.uml和staruml之间的关系2.软件的安装3.配置脚本语言4.Staruml创建类图4.反向工程 1.uml和staruml之间的关系 这篇文章主要是介绍这个staruml软件的安装和相关的背景介绍: 我和uml初识于IDEA软件,学习java的你一定用过这个软件,当…...
神经网络发展简史:从感知机到通用智能的进化之路
引言 神经网络作为人工智能的核心技术,其发展历程堪称一场人类对生物大脑的致敬与超越。本文将用"模型进化"的视角,梳理神经网络发展的五大关键阶段,结合具象化比喻和经典案例,为读者呈现一幅清晰的AI算法发展图谱。 一…...
快节奏生活
在当今快节奏的商务环境中,效率成为了决定企业竞争力的关键因素之一。亿可达软件连接平台,以其独特的功能和优势,为职场人士带来了前所未有的便捷与高效,成为了众多用户心中的“宝藏”工具。 1、亿可达:自动化流程的搭…...
Windows 11【1001问】通过Rufus制作Win 11系统安装U盘
随着科技的发展,Windows 11 已经成为许多用户的首选操作系统。在之前的几篇文章中,我们详细探讨了 Windows 11 的概念、安装配置要求以及如何下载 Windows 11 镜像文件,并介绍了六种不同的安装方法。本篇博客将聚焦于使用 ISO 文件安装 Windo…...
spring中手写注解开发(创建对象篇)
说明: 在spring底层中并不是我写的如此,这篇只是我用我自己的方式实现了使用注解组件扫描并且 创建对象,方法并不是很难,可以看一看,欢迎大佬评论 第一步: 我们需要自己写一个注解,我用的是idea…...
DeepSeek进入开源周,分享几点关于开源的思考
最近DeepSeek进入开源周,又把差点被大众遗忘在角落的开源话题拉了出来。 作为一个开源作者,也分享几点关于开源的思考。 AI对开源的影响 开源项目遇到的最大困难 开源项目不应该商业化 你的开源项目是垃圾...
大模型训练中的数据不平衡问题及其解决策略
目录 大模型训练中的数据不平衡问题及其解决策略 一、数据不平衡问题的影响 二、处理数据不平衡问题的方法 1. 过采样(Oversampling) 2. 欠采样(Undersampling) 3. 代价敏感学习(Cost-Sensitive Learning…...
本地部署DeepSeek R1满血版大模型
一、前言 老周上一篇分享了《本地部署DeepSeek R1大模型》,本地受硬件条件限制,只跑了80亿参数量的模型。 1.5b模型基本可以在大部分个人电脑甚至手机中运行,如果你有 6G 显存以上,那么可以部署7b模型,如果有16G显存&…...
外发抄板SCH与PCB检查系列
外发抄板SCH与PCB检查系列 一、检查到手的文件二、PCB与原理图的对应检查1.为什么要查SCH与Pcbdoc的对应?2.查询方法 三、PCB与实物的信号对应检查 一、检查到手的文件 外发出去两块板子:控制板与功率板。 抄板机构返回的文件: 1.互相独立的…...
EX_25/2/25
编写一个如下场景: 有一个英雄Hero类,私有成员,攻击,防御,速度,生命值,以及所有的set get 方法 编写一个 武器 Weapon 类,拥有私有成员攻击力,以及set get 方法 编写一个…...
C# 打印Word文档 – 4种打印方法
Word文档是日常办公和学习中不可或缺的一部分。比如在商务往来中,经常需要打印 Word 文档用于撰写和传递正式的商务信函、合作协议、项目提案等。打印出来的文档便于双方签字盖章,具有法律效力和正式性。本文将提供以下4种通过C# 打印Word文档的方法&…...
ROS的action通信——实现阶乘运算(一)
在ROS中除了常见的话题(topic)通信、服务(server)通信等方式,还有action通信这一方式,由于可以实时反馈任务完成情况,该通信方式被广泛运用于机器人导航等任务中。本文将通过三个小节的分享,实现基于action通信的阶乘运…...
Mac 上安装多版本的 JDK 且实现 自由切换
1.可以通过查看以下目录中的内容,确认当前已经安装的 jdk 版本。 cd /Library/Java/JavaVirtualMachines2.命令行查看 jdk 的安装路径 /usr/libexec/java_home -V3.下载要安装的jdk版本,修改环境变量( cat ~/.bash_profile) # 定义JDK 8和JDK 17的安装路…...
网络编程套接字
目录 一、认识端口号 二、端口号和进程ID 三、TCP/UDP协议 四、网络字节序 五、socket编程接口 5.1socket的常见API 5.2socketaddr结构 六、简单的UDP程序 七、地址转换函数 八、简单的TCP网络程序 九、Tcp协议通讯流程 9.1基于TCP协议的客户端/服务器程序的一般流…...
45.matlab产生正弦叠加信号
,...
Java23种设计模式案例
目录 一、概述 二、创建型模式 (Creational Patterns) 单例模式 (Singleton Pattern) 工厂方法模式 (Factory Method Pattern) 抽象工厂模式 (Abstract Factory Pattern) 建造者模式 (Builder Pattern) 原型模式 (Prototype Pattern) 三、结构型模式 (Structu…...
计算机毕业设计程序,定制开发服务
我们擅长的开发语言包括Python、C、Golang、Java,以及前端技术如HTML、CSS、JS和Vue。我们的服务内容丰富,能够满足您各种需求,无论是简单的功能开发还是复杂的定制项目,我们都能为您提供专业支持。若有具体需求可联系作者。 链接…...
AI提示词的种类与适合的任务
以下是提示词的主要种类及其适用任务,基于大模型特性与最佳实践总结: 一、基础提示词 零样本提示(Zero-shot Prompting) 形式:直接输入任务指令,不提供示例(如“翻译以下句子:Hello …...
【Kimi】自动生成PPT-并支持下载和在线编辑--全部免费
【Kimi】免费生成PPT并免费下载 用了好几个大模型,有些能生成PPT内容; 有些能生成PPT,但下载需要付费; 目前只有Kimi生成的PPT,能选择模板、能在线编辑、能下载,关键全部免费! 一、用kimi生成PP…...
Maven环境搭建
Maven 1. 概述 ApacheMaven是一个软件项目管理和构建工具。基于项目对象模型(POM)的概念,Maven可以从中心信息中管理项目的构建、报告和文档 理解: maven构建项目(100%)而且帮你完成jar的统一管理。 思考: 原来的jar—…...
Vue面试题
Vue面试题 Vue2.0的生命周期,每个生命周期分别做了哪些事情 create阶段:vue实例被创建。 beforeCreate: 创建前,此时data和methods中的数据都还没有初始化; created:创建完毕,data中有值,未…...
Linux时间日期类指令
1、data指令 基本语法: date : 显示当前时间date %Y : 显示当前年份date %m : 显示当前月份date %d : 显示当前哪一天date “%Y-%m-%d %H:%M:%S" : 显示年月日时分秒date -s 字符串时间 : 设置系统时…...
国标28181协议在智联视频超融合平台中的接入方法
一. 国标28181介绍 国标 28181 协议全称是《安全防范视频监控联网系统信息传输、交换、控制技术要求》,是国内视频行业最重要的国家标准,目前有三个版本: 2011 年:推出 GB/T 28181-2011 版本,为安防行业的前端设备、平…...
pyautogui库的screenshot()函数
# 方法一 screenshot pyautogui.screenshot() screenshot.save("screenshot.png")# 方法二 # 获取屏幕分辨率 screen_width, screen_height pyautogui.size()# 截取桌面屏幕 screenshot pyautogui.screenshot(region(0, 0, screen_width, screen_height)) screens…...
python与C系列语言的差异总结(3)
与其他大部分编程语言不一样,Python使用空白符(whitespace)和缩进来标识代码块。也就是说,循环体、else条件从句之类的构成,都是由空白符加上冒号(:)来确定的。大部分编程语言都是使用某种大括号来标识代码块的。下面的…...
《Linux系统编程篇》System V信号量实现生产者与消费者问题(Linux 进程间通信(IPC))——基础篇(拓展思维)
文章目录 📚 **生产者-消费者问题**🔑 **问题分析**🛠️ **详细实现:生产者-消费者****步骤 1:定义信号量和缓冲区****步骤 2:创建信号量****步骤 3:生产者进程****步骤 4:消费者进程…...
Jmeter接口并发测试
Apache JMeter 是一款开源的性能测试工具,广泛用于接口并发测试、负载测试和压力测试。以下是使用 JMeter 进行接口并发测试的详细步骤: 一、准备工作 安装 JMeter 下载地址:Apache JMeter 官网 确保已安装 Java 环境(JMeter 依…...
Python--内置函数与推导式(上)
1. 匿名函数 Lambda表达式基础 语法:lambda 参数: 表达式 特点: 没有函数名,适合简单逻辑函数体只能是单行表达式自动返回表达式结果 # 示例1:加法 add lambda a, b: a b print(add(3, 5)) # 输出 8# 示例2:字…...
Python爬虫实战:获取六图网漫画图
注意:以下内容仅供技术研究,请遵守目标网站的robots.txt规定,控制请求频率避免对目标服务器造成过大压力! 一、引言 Python 作为一种广泛应用于数据处理和网络爬虫领域的编程语言,拥有丰富的库和框架。其中,Scrapy 框架以其高效、灵活、可扩展等特点,成为构建爬虫程序的…...
《人工智能之高维数据降维算法:PCA与LDA深度剖析》
在人工智能与机器学习蓬勃发展的当下,数据处理成为关键环节。高维数据在带来丰富信息的同时,也引入了计算复杂度高、过拟合风险增大以及数据稀疏性等难题。降维算法应运而生,它能将高维数据映射到低维空间,在减少维度的同时最大程…...
第2课 树莓派镜像的烧录
树莓派的系统通常是安装在SD卡上的。SD卡作为启动设备,负责启动树莓派并加载操作系统。这种设计使得树莓派具有便携性和灵活性,用户可以通过更换SD卡来更换操作系统或恢复出厂设置。 烧录树莓派的镜像即是将树莓派镜像烧录到SD卡上,…...
网络安全复习资料
网络安全复习资料 1.计算机网络安全是指保持网络中的硬件、软件系统正常运行,使他们不因自然和人为的因素而受到破坏、更改和泄露。 2.网络安全:物理安全,软件安全,信息安全,运行安全。 3.安全防范措施:…...
PIG框架学习5——动态路由实现
一、前言 参考PIGX官方文档:https://www.yuque.com/pig4cloud/pig/ggnc3e 1.1 说明 在微服务中,定义路由一般是在网关gateway对应的配置文件中进行定义声明的,PIGX框架下,如何通过动态路由实现网关路由的实时更新? 实…...
vscode设置自动换行
vscode设置自动换行 方法 方法 点击文件->首选项->设置。搜索word wrap -> 选择 on 。 搜索Word Wrap,并把选项改为on。...
Flutter-升级Xcode后构建iOS报错
代码什么都没改动,貌似只是升级了下Xcode,构建iOS就一直报错,错误有时候还不一样。 Swift Compiler Error (Xcode): Unable to rename temporary /Users/admin/Library/Developer/Xcode/DerivedData/ModuleCache.noindex/2ZBFEEPIDQ0EY/Core…...
架构思维:架构的演进之路
文章目录 引言为什么架构思维如此重要架构师的特点软件架构的知识体系如何提升架构思维大型互联网系统架构的演进之路一、大型互联网系统的特点二、系统处理能力提升的两种途径三、大型互联网系统架构演化过程四、总结 引言 在软件开发行业中,有很多技术人可能会问…...
ElasticSearch公共方法封装
业务场景 1、RestClientBuilder初始化(同时支持单机与集群) 2、发送ES查询请求公共方法封装(支持sql、kql、代理访问、集群访问、鉴权支持) 3、判断ES索引是否存在(/_cat/indices/${indexName}) 4、判断ES…...
[Web 信息收集] Web 信息收集 — 手动收集 IP 信息
关注这个专栏的其他相关笔记:[Web 安全] Web 安全攻防 - 学习手册-CSDN博客 0x01:通过 DNS 服务获取域名对应 IP DNS 即域名系统,用于将域名与 IP 地址相互映射,方便用户访问互联网。对于域名到 IP 的转换过程则可以参考下面这篇…...
多源最短路径求解: Floyd-Warshall算法和Johnson 算法
多源最短路径问题是图论中的一个经典问题, 它要求找到图中所有顶点对之间的最短路径. 这个问题可以通过几种不同的算法来解决, 其中最为著名的包括 Floyd-Warshall Algorithm 和 Johnson’s Algorithm. Floyd-Warshall 算法 弗洛伊德-沃沙尔算法(Floyd-Warshall Algorithm) 是…...
解决IDEA使用Ctrl + / 注释不规范问题
问题描述: ctrl/ 时,注释缩进和代码规范不一致问题 解决方式 设置->编辑器->代码样式->java->代码生成->注释代码...
第9章 机器学习与统计模型
这一章重点探讨统计模型和机器学习模型,两个大的主题都建立在数据的基础之上,所以要熟练掌握对数据的处理与分析。实际上,机器学习本身就是统计模型的延伸,是在大数据背景下传统统计方法捉襟见肘了,所以才考虑引入机器…...
基于MATLAB的OFDM通信系统仿真设计
下面将为你详细介绍基于MATLAB的OFDM通信系统仿真设计的步骤和示例代码。 1. OFDM系统原理概述 正交频分复用(OFDM)是一种多载波调制技术,它将高速数据流通过串并转换,分配到多个正交的子载波上进行传输,这样可以有效…...
WebRTC学习七:WebRTC 中 STUN 协议详解
系列文章目录 第一篇 基于SRS 的 WebRTC 环境搭建 第二篇 基于SRS 实现RTSP接入与WebRTC播放 第三篇 centos下基于ZLMediaKit 的WebRTC 环境搭建 第四篇 WebRTC学习一:获取音频和视频设备 第五篇 WebRTC学习二:WebRTC音视频数据采集 第六篇 WebRTC学习三…...
力扣47. 全排列 II
思路 用 used 保存在一次答案中取过的数组索引。 先对数组进行排序,然后尝试取每个元素作为排列。 首先需要满足不重复取自己,即 !used.contains(i)。其次当前元素和前一个元素不同时可取,即 i 0 || nums[i] ! nums[i - 1]; 如…...
什么是将应用放在边缘服务器上创建?应用不是在用户手机上吗?边缘计算究竟如何优化?通过两个问题来辨析
元宇宙应用虽然可以在用户的手机等终端设备上运行,但大部分的计算和数据处理任务并不是完全在手机上完成的。元宇宙的运行需要庞大的计算资源和大量的数据交互,而这些是手机等终端设备难以独自承担的。因此,元宇宙应用需要借助边缘数据中心等…...
jmeter高级使用场景
JMeter 是一款功能强大的性能测试工具,除了基础的使用方法外,还有许多高级使用技巧,可帮助你更精准、高效地完成复杂的测试任务。以下为你详细介绍一些 JMeter 的高级使用方法: 分布式测试 当需要模拟大量并发用户来对系统进行压力测试时,单台机器的性能可能无法满足要求…...