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

C++SLT(三)——list

目录

  • 一、list的介绍
  • 二、list的使用
    • list的定义方式
  • 三、list的插入和删除
    • push_back和pop_back
    • push_front和pop_front
    • insert
    • erase
  • 四、list的迭代器使用
  • 五、list的元素获取
  • 六、list的大小控制
  • 七、list的操作函数
    • sort和reverse
    • merge
    • remove
    • remove_if
    • unique
    • assign
    • swap


一、list的介绍

  1. list是一种可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。
  2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立结点当中,在结点中通过指针指向其前一个元素和后一个元素。
  3. list与forward_list非常相似,最主要的不同在于forward_list是单链表,只能进行单方向迭代。
    与其他容器相比,list通常在任意位置进行插入、删除元素的执行效率更高。
  4. list和forward_list最大的缺陷是不支持在任意位置的随机访问,其次,list还需要一些额外的空间,以保存每个结点之间的关联信息(对于存储的类型较小元素来说这可能是一个重要的因素)。

二、list的使用

list的定义方式

构造函数接口说明
list()构造空的list
list (size_type n, const value_type& val = value_type())构造的list中包含n个值为val的元素
list (const list& x)拷贝构造函数
list (InputIterator first, InputIterator last)用[first, last)区间中的元素构造list
void test_list()
{//构造int类型的空容器list<int> lt1;			// 构造一个含有n个val的某类型容器list<int> lt2(5, 2);//拷贝构造某类型容器list<int> lt3(lt2);//使用迭代器拷贝构造某一段内容string str("hello world");list<char> lt4(str.begin(), str.end());				//构造string对象某段区间的复制品//构造数组某段区间的复制品int arr[] = { 1, 2, 3, 4, 5 };list<int> lt5(arr, arr + sizeof(arr) / sizeof(int));
}

三、list的插入和删除

函数声明接口说明
push_back在list尾部插入值为val的元素
pop_back删除list中最后一个元素
push_front在list首元素前插入值为val的元素
pop_front删除list中第一个元素
insert在list position 位置中插入值为val的元素
erase删除list position位置的元素

push_back和pop_back

void test1_list()
{//push_back()和pop_back(),两种循环都可以list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);auto it = lt.begin();while (it != lt.end()){cout << *it << " ";			//1 2 3 4++it;}cout << endl;lt.pop_back();lt.pop_back();for (auto e : lt){cout << e << " ";			//1 2}cout << endl;
}

push_front和pop_front

void test2_list()
{//push_front和pop_front,通常用范围for方便一点list<int> lt1;lt1.push_front(1);lt1.push_front(2);lt1.push_front(3);for (auto e : lt1){cout << e << " ";			//3 2 1}cout << endl;lt1.pop_front();for (auto e : lt1){cout << e << " ";			//2 1}cout << endl;
}

insert

  1. 在指定迭代器位置插入一个数。
  2. 在指定迭代器位置插入n个值为val的数。
  3. 在指定迭代器位置插入一段迭代器区间(左闭右开)。
void test3_list()
{list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);lt.push_back(5);//5前插入17//v.insert(v.begin() + 5, 17);		//顺序表的话迭代器开头+5就可以插入auto it = lt.begin();				//链表,1.类似指针指到5前,2.插入for (size_t i = 0; i < 5; i++)		{++it;}lt.insert(it,17);					for (auto e : lt){cout << e << " ";				//1 2 3 4 5 17}cout << endl;//在指定的数前插入,例如在4前插入100,使用find找到该数it = find(lt.begin(), lt.end(), 4);if (it != lt.end()){lt.insert(it, 100);}for (auto e : lt){cout << e << " ";				//1 2 3 100 4 5 17}cout << endl;
}

find函数是头文件“algorithm”当中的一个函数,该函数在指定迭代器区间(左闭右开)寻找指定值的位置,并返回该位置的迭代器。

template<class InputIterator, class T>InputIterator find (InputIterator first, InputIterator last, const T& val)
{while (first!=last) {if (*first==val) return first;++first;}return last;
}

erase

list当中的erase函数支持两种删除方式:

  1. 删除指定迭代器位置的元素。
  2. 删除指定迭代器区间(左闭右开)的所有元素。
void test4_list()
{list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);lt.push_back(5);lt.push_back(6);lt.push_back(7);auto it = find(lt.begin(), lt.end(), 3);lt.erase(it);								//删除3for (auto e : lt){cout << e << " ";						//1 2 4 5 6 7}cout << endl;it = find(lt.begin(), lt.end(), 5);lt.erase(it, lt.end());						//删除5后所有元素(左闭右开)for (auto e : lt){cout << e << " ";						//1 2 4}cout << endl;
}

四、list的迭代器使用

函数声明接口说明
begin + end返回第一个元素的迭代器+返回最后一个有效元素下一个位置的迭代器
rbegin + rend返回第一个元素的reverse_iterator,即end位置,返回最后一个有效元素下一个位置的reverse_iterator,即begin位置
void test5_list()
{//正向迭代器遍历容器list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);//list<int>::iterator it = lt.begin();auto it = lt.begin();while (it != lt.end()){cout << *it << " ";				//1 2 3 4++it;}cout << endl;//反向迭代器遍历容器list<int> lt1;lt1.push_back(1);lt1.push_back(2);lt1.push_back(3);lt1.push_back(4);auto rit = lt1.rbegin();while (rit != lt1.rend()){cout << *rit << " ";			//4 3 2 1++rit;}cout << endl;
}

五、list的元素获取

函数声明接口说明
front返回list的第一个节点中值的引用
back返回list的最后一个节点中值的引用
void test6_list()
{list<int> lt;lt.push_back(0);lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);cout << lt.front() << endl;		//0cout << lt.back() << endl;		//4
}

六、list的大小控制

函数声明接口说明
size返回list中有效节点的个
resize1.当所给值大于当前的size时,将size扩大到该值,扩大的数据为第二个所给值,若未给出,则默认为容器所存储类型的默认构造函数所构造出来的值。2.当所给值小于当前的size时,将size缩小到该值。
empty检测list是否为空,是返回true,否则返回false
clear清空list中的有效元素
void test7_list()
{//size获取当前容器当中的元素个数list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);cout << lt.size() << endl;			//4//resize扩容(可赋值)或缩容list<int> lt1(5, 2);for (auto e : lt1){cout << e << " ";				//2 2 2 2 2}cout << endl;lt1.resize(8, 5);					//将size扩大为8,扩大的值为5for (auto e : lt1){cout << e << " ";				//2 2 2 2 2 5 5 5}cout << endl;lt1.resize(3);						//将size缩小为3for (auto e : lt1){cout << e << " ";				//2 2 2}cout << endl;//empty判断是否为空,没元素返回1,有元素返回0list<int> lt2;cout << lt2.empty() << endl;		//1cout << lt1.empty() << endl;		//0//clear清空容器(size元素)list<int> lt4(5, 2);for (auto e : lt4){cout << e << " ";				//2 2 2 2 2}cout << endl;						cout << lt4.size() << endl;			//5lt.clear();							//清空容器for (auto e : lt){cout << e << " ";				//(无数据)}cout << endl;								cout << lt.size() << endl;			//0
}

七、list的操作函数

函数声明接口说明
sort将容器当中的数据默认排为升序
reverse将容器当中元素的位置进行逆置
splice用于两个list容器之间的拼接
remove用于删除容器当中特定值的元素
remove_if用于删除容器当中满足条件的元素
unique用于删除容器当中连续的重复元素
merge将一个有序list容器合并到另一个有序list容器当中,使得合并后的list容器任然有序。(类似于归并排序)
assign将新内容分配给容器,替换其当前内容
swap交换两个容器的内容

sort和reverse

void test8_list()
{list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);lt.push_back(10);lt.push_back(20);for (auto e : lt){cout << e << " ";					//1 2 3 4 10 20}cout << endl;lt.reverse();for (auto e : lt){cout << e << " ";					//20 10 4 3 2 1}cout << endl;
}

merge

merge函数用于将一个有序list容器合并到另一个有序list容器当中,使得合并后的list容器任然有序。(类似于归并排序)

void test10_list()
{list<int> lt;lt.push_back(17);lt.push_back(55);lt.push_back(32);list<int> lt1;lt1.push_back(11);lt1.push_back(3);lt1.push_back(100);lt.sort();lt1.sort();lt.merge(lt1);						//将lt1合并到ltfor (auto e : lt){cout << e << " ";				//3 11 17 32 55 100}cout << endl;
}

remove

remove函数用于删除容器当中特定值的元素。

void test9_list()
{int arr[] = { 12,65,32,11,22,11,3 };list<int> mylist(arr, arr + sizeof(arr) / sizeof(int));mylist.remove(11);for (auto e : mylist){cout << e << " ";				//12 65 32 22 3}cout << endl;
}

remove_if

remove_if函数用于删除容器当中满足条件的元素

bool single_digit(const int& val)
{return val < 10;
}
void test11_list()
{list<int> lt;lt.push_back(3);lt.push_back(2);lt.push_back(65);lt.push_back(33);lt.push_back(9);lt.push_back(5);lt.push_back(4);for (auto e : lt){cout << e << " ";}cout << endl;							//3 2 65 33 9 5 4lt.remove_if(single_digit);				//删除容器当中值小于10的元素for (auto e : lt){cout << e << " ";}cout << endl;							//65 33
}

unique

unique函数用于删除容器当中连续的重复元素。

void test12_list()
{list<int> lt;lt.push_back(2);lt.push_back(3);lt.push_back(3);lt.push_back(2);lt.push_back(1);lt.push_back(3);lt.push_back(3);for (auto e : lt){cout << e << " ";}cout << endl;			//2 3 3 2 1 3 3lt.sort();				lt.unique();			//删除容器当中连续的重复元素for (auto e : lt){cout << e << " ";}cout << endl;			//1 2 3 
}

assign

assign函数用于将新内容分配给容器,替换其当前内容,新内容的赋予方式有两种:

  1. 将n个值为val的数据分配给容器。
  2. 将所给迭代器区间当中的内容分配给容器。
void test13_list()
{list<char> lt(3, 's');lt.assign(4, 'a');						//将新内容分配给容器,替换其当前内容for (auto e : lt){cout << e << " ";					//a a a a}cout << endl;string str("hello word");lt.assign(str.begin(), str.end());		//将新内容分配给容器,替换其当前内容for (auto e : lt){cout << e << " ";					//h e l l o   w o r d}cout << endl;
}

swap

void test14_list()
{list<int> lt1(5, 2);list<int> lt2(2, 6);lt1.swap(lt2);				 //交换两个容器的内容for (auto e : lt1){cout << e << " ";}cout << endl;				//6 6for (auto e : lt2){cout << e << " ";}cout << endl;				//2 2 2 2 2
}

相关文章:

C++SLT(三)——list

目录 一、list的介绍二、list的使用list的定义方式 三、list的插入和删除push_back和pop_backpush_front和pop_frontinserterase 四、list的迭代器使用五、list的元素获取六、list的大小控制七、list的操作函数sort和reversemergeremoveremove_ifuniqueassignswap 一、list的介…...

基于Coze平台实现抖音链接提取文案转小红书文案的智能体开发全流程解析

文章目录 引言:跨平台内容运营的AI解法实例最终效果1. 平台特性对比与转化需求分析1.1 用户画像与内容风格对比1.2 文案转化核心需求2. Coze平台技术架构解析2.1 Coze核心能力矩阵2.2 关键技术组件选型3. 智能体工作流设计3.1 完整处理流程3.2 关键节点说明4. 核心模块实现详解…...

32. 最长有效括号

动态规划 dp[i]表示以i下标为结尾的最长有效括号的长度&#xff0c;取dp[i]中的最大值即可。 i从1开始判断&#xff0c;只有s[i])才需要判断&#xff1a; 如果s[i-1](&#xff0c;那么dp[i]dp[i-2]2&#xff0c;注意判断i-2的范围否则&#xff0c;如果dp[i-1]>0&#xff0…...

Linux常见问题解决方法--2

如何反爬 后台对访问进行统计&#xff0c;如果单个 IP 访问超过阈值&#xff0c;予以封锁 后台对访问进行统计&#xff0c;如果单个 session 访问超过阈值&#xff0c;予以封锁 后台对访问进行统计&#xff0c;如果单个 userAgent 访问超过阈值&#xff0c;予以封锁 以上的组…...

STM32H7和F7 主要区别

STM32H7和F7系列是STMicroelectronics推出的高性能ARM Cortex-M微控制器系列&#xff0c;二者在性能、外设和用途上有显著区别。以下是它们的主要区别&#xff1a; 1. 内核与性能 STM32H7&#xff1a; 内核&#xff1a;Cortex-M7&#xff08;单核或双核&#xff0c;部分型号带…...

软件测试丨PyTorch 图像目标检测

随着人工智能和机器学习的飞速发展&#xff0c;图像目标检测技术在各个领域扮演着越来越重要的角色。无论是在安防监控、自动驾驶车辆&#xff0c;还是在医疗影像分析和智能家居中&#xff0c;图像目标检测都发挥着不可或缺的作用。今天&#xff0c;我们将深入探讨其中一种热门…...

利用TensorFlow.js实现浏览器端机器学习:一个全面指南

引言 随着深度学习技术的不断发展&#xff0c;机器学习已从传统的服务器端运算逐渐转向了前端技术。TensorFlow.js 是 Google 推出的一个用于在浏览器中进行机器学习的开源库&#xff0c;它允许开发者在浏览器中直接运行机器学习模型&#xff0c;而无需依赖后端服务器。Tensor…...

全流程安装DeepSeek开源模型

目录 安装Ollama选择大模型安装大模型对话备注 安装Ollama 安装DeepSeek首先需要安装一个Ollama&#xff0c;这个软件相当于运行DeepSeek模型的底层&#xff0c;没有这个底层就没办法跑DeepSeek AI模型。 下载地址&#xff1a; https://ollama.com/点击下载windows版本&…...

VulnHub | Prime - 1

https://vulnhub.com/entry/prime-1,358/https://vulnhub.com/entry/prime-1,358/ 0x01&#xff1a;靶场简介 Prime 1 是 VulHub 中的一台用于 OSCP 考试练习的靶机。通过本靶机&#xff0c;我们可以系统的了解的渗透测试的全流程。本靶机的通关目标如下&#xff1a; Get The…...

实验十 Servlet(一)

实验十 Servlet(一) 【实验目的】 1&#xff0e;了解Servlet运行原理 2&#xff0e;掌握Servlet实现方式 【实验内容】 1、参考课堂例子&#xff0c;客户端通过login.jsp发出登录请求&#xff0c;请求提交到loginServlet处理。如果用户名和密码相同则视为登录成功&#xff0c…...

寒假刷题Day22

一、2570. 合并两个二维数组 - 求和法 class Solution { public:vector<vector<int>> mergeArrays(vector<vector<int>>& nums1, vector<vector<int>>& nums2) {int i 0, j 0, n1 nums1.size(), n2 nums2.size();int tmp 0;…...

KES数据库实践指南:探索KES数据库的事务隔离级别

引言 前两篇文章我们详细讲解了如何安装KES金仓数据库&#xff0c;并提供了快速查询和搭建基于coze平台的智能体的解决方案。今天&#xff0c;我们的焦点将放在并发控制机制和事务隔离级别上。 本文将通过一系列实验操作&#xff0c;深入探讨KES数据库中的并发控制机制和事务…...

基于STM32的智能加湿器设计(新版本)

目录 1、设计要求 2、系统功能 3、演示视频和实物 4、系统设计框图 5、软件设计流程图 6、原理图 7、主程序 8、总结 &#x1f91e;大家好&#xff0c;这里是5132单片机毕设设计项目分享&#xff0c;今天给大家分享的是加湿器。设备的详细功能见网盘中的文章《12、基于…...

Electricity Market Optimization 探索系列(三)

本文参考链接link 电网容量规划是一个寻求最优发电容量的过程&#xff0c;找到的最优发电容量能够可靠地满足未来电网的需求 发电机的容量和发电成本呈正相关关系&#xff0c;一台发电机的发电量不能超过其额定发电容量&#xff0c;结合我之前的博客所说的内容&#xff0c;可…...

JAVA进阶之线程

为神马有线程&#xff1f;这玩意儿在干嘛&#xff1f;&#xff1f;&#xff1f; 回答这个问题&#xff0c;就先要知道一点点计算机的工作方式。 总所周知&#xff0c;计算机有五部分&#xff1a;输入输出、计算器、存储器、控制器。而在计算机内&#xff0c;CPU、内存、I/O之…...

浙江安吉成新照明电器有限公司分布式光伏发电项目--安科瑞Acrel-1000DP分布式光伏监控系统

安科瑞 崔丽洁 项目背景 随着可再生能源的发展&#xff0c;分布式光伏发电成为重要的能源利用方式。浙江安吉成新照明电器有限公司 3234.465kWp 分布式光伏发电项目应运而生。该公司是螺旋节能灯毛管专业生产企业&#xff0c;于 2007 年 6 月成立&#xff0c;具备全自动生产线、…...

pytorch实现主成分分析 (PCA):用于数据降维和特征提取

人工智能例子汇总&#xff1a;AI常见的算法和例子-CSDN博客 使用 PyTorch 实现主成分分析&#xff08;PCA&#xff09;可以通过以下步骤进行&#xff1a; 标准化数据&#xff1a;首先&#xff0c;需要对数据进行标准化处理&#xff0c;确保每个特征的均值为 0&#xff0c;方差…...

2025_2_4 C语言中关于free函数及悬空指针,链表的一级指针和二级指指针

1.free函数 free函数所接受的参数只能是动态分配出来的内存&#xff0c;&#xff0c;否者free的行为是未定义的同一片内存空间不能被free两次 free过后的内存可能会引发悬空指针的问题 2.悬空指针 悬空指针的问题主要是free过后的内存空间&#xff0c;原先指向这片空间的指…...

pytorch逻辑回归实现垃圾邮件检测

人工智能例子汇总&#xff1a;AI常见的算法和例子-CSDN博客 完整代码&#xff1a; import torch import torch.nn as nn import torch.optim as optim from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.model_selection import train_test_split …...

一次线程数超限导致的hive写入hbase作业失败分析

1.集群配置 操作系统:SuSe操作系统 集群节点:100台相同配置的服务器 单台:核心112Core,内存396G 2.问题现象 现象1:跑单个入库任务报错,批量提交任务后出现OOM异常 执行12个hivesql,将数据写入hbase.hbase入库有近一半的任务报错。 每次报错的任务不是同一个,hivesql…...

JAVA安全—反射机制攻击链类对象成员变量方法构造方法

前言 还是JAVA安全&#xff0c;哎&#xff0c;真的讲不完&#xff0c;太多啦。 今天主要是讲一下JAVA中的反射机制&#xff0c;因为反序列化的利用基本都是要用到这个反射机制&#xff0c;还有一些攻击链条的构造&#xff0c;也会用到&#xff0c;所以就讲一下。 什么是反射…...

Java集合面试总结(题目来源JavaGuide)

问题1&#xff1a;说说 List,Set,Map 三者的区别&#xff1f; 在 Java 中&#xff0c;List、Set 和 Map 是最常用的集合框架&#xff08;Collection Framework&#xff09;接口&#xff0c;它们的主要区别如下&#xff1a; 1. List&#xff08;列表&#xff09; 特点&#xf…...

【区块链】深入理解椭圆曲线密码学(ECC)

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 深入理解椭圆曲线密码学(ECC)1. 概述2. 椭圆曲线的数学基础2.1 基本定义2.2 有限…...

接口游标分页

由于数据库本身的的限制(以MySQL为例),以 page_num,page_size 为代表的偏移分页方式不可避免的会遇到深分页问题。 不过用户若要找符合条件的少量数据,通过翻页则十分低效,且大多用户也不会往后翻很多页,故对于C端筛选数据场景,限制分页数量增加筛选条件才是标准解决方…...

大数据数仓实战项目(离线数仓+实时数仓)2

目录 1.课程目标和课程内容介绍 2.数仓维度建模设计 3.数仓为什么要分层 4.数仓分层思想和作用 5.数仓中表的种类和同步策略 6.数仓中表字段介绍以及表关系梳理 订单表itcast_orders 订单明细表 itcast_order_goods 商品信息表 itcast_goods 店铺表 itcast_shops 商…...

C++输入输出(上)

cin和cout cin是C中提供的标准输入流对象,一般针对的是键盘,也就是从键盘上输入的字符流,使用 cin来进行数据的提取,cin一般是和 >> (流提取运算符) 配合使用的。 cin的功能和scanf是类似的 cout是C中提供的标准输出流对象,一般针对的是控制台的窗口,也就是将数据以字符…...

SpringBoot 连接Elasticsearch带账号密码认证 ES连接 加密连接

依赖 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId> </dependency>配置文件 es:ip: 172.23.4.130port: 9200user: elasticpassword: qwertyuiop读取配置文件…...

选择排序

选择排序的基本思想&#xff1a; 每⼀次从待排序的数据元素中选出最⼩&#xff08;或最⼤&#xff09;的⼀个元素&#xff0c;存放在序列的起始位置&#xff0c;直到全部待 排序的数据元素排完。 直接选择排序 1. 在元素集合 array[i]--array[n-1] 中选择关键码最⼤(⼩)的数据…...

Linux——进程概念

目录 一、系统调用和库函数概念二、基本概念三、描述进程-PCB3.1 task_struct-PCB的一种3.2 task_ struct内容分类 四、组织进程五、查看进程六、通过系统调用获取进程标示符七、通过系统调用创建进程- fork初始7.1 fork函数创建子进程7.2 fork 之后通常要用 if 进行分流 八、进…...

强化学习笔记(5)——PPO

PPO视频课程来源 首先理解采样期望的转换 变量x在p(x)分布下&#xff0c;函数f(x)的期望 等于f(x)乘以对应出现概率p(x)的累加 经过转换后变成 x在q(x)分布下&#xff0c;f(x)*p(x)/q(x) 的期望。 起因是&#xff1a;求最大化回报的期望&#xff0c;所以对ceta求梯度 具体举例…...

Java设计模式:行为型模式→状态模式

Java 状态模式详解 1. 定义 状态模式&#xff08;State Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许对象在内部状态改变时改变其行为。状态模式通过将状态需要的行为封装在不同的状态类中&#xff0c;实现对象行为的动态改变。该模式的核心思想是分离不同状态…...

postgresql的用户、数据库和表

在 PostgreSQL 中&#xff0c;用户、数据库和表是关系型数据库系统的基本组成部分。理解这些概念对数据库管理和操作至关重要。下面是对这些概念的详细解释&#xff1a; 1. 用户&#xff08;User&#xff09; 在 PostgreSQL 中&#xff0c;用户&#xff08;也称为 角色&#…...

什么是Rust?它有什么特点?为什么要学习Rust?

什么是Rust&#xff1f;它有什么特点&#xff1f;为什么要学习Rust&#xff1f; 如果你是一名编程初学者&#xff0c;或者已经有一些编程经验但对Rust感兴趣&#xff0c;那么这篇文章就是为你准备的&#xff01;我们将用简单易懂的语言&#xff0c;带你了解Rust是什么、它有什…...

Maven(Ⅱ):依赖范围,依赖传递,依赖阻断,可选依赖

1. Maven 依赖范围 概念 依赖范围&#xff08;Dependency Scope&#xff09;用于控制依赖在不同构建阶段的可见性和可用性。Maven 定义了几种不同的依赖范围&#xff0c;每种范围都有其特定的使用场景。 常见依赖范围及用途 compile&#xff1a;默认的依赖范围&#xff0c;…...

个人c项目 java项目解释

1. 测试环境与方法 中文&#xff1a; 本地测试环境&#xff1a;可以在一台配置中等的电脑上构建一个测试环境&#xff0c;利用现成的大词库数据&#xff08;例如英文词典或自定义数据集&#xff09;来构建 Trie。使用 C 语言的编译器&#xff08;例如 gcc&#xff09;编译项目&…...

51单片机看门狗系统

在 STC89C52 单片机中&#xff0c;看门狗控制寄存器的固定地址为 0xE1。此地址由芯片厂商在硬件设计时确定&#xff0c;但是它在头文件中并未给出&#xff0c;因此在使用看门狗系统时需要声明下这个特殊功能寄存器 sfr WDT_CONTR 0xE1; 本案将用一个小灯的工作状况来展示看门…...

爬虫基础(五)爬虫基本原理

目录 一、爬虫是什么 二、爬虫过程 &#xff08;1&#xff09;获取网页 &#xff08;2&#xff09;提取信息 &#xff08;3&#xff09;保存数据 三、爬虫可爬的数据 四、爬虫问题 一、爬虫是什么 互联网&#xff0c;后面有个网字&#xff0c;我们可以把它看成一张蜘蛛网…...

Android 使用ExpandableListView时,需要注意哪些细节

1. 布局属性设置 尺寸属性 宽度和高度&#xff1a;要合理设置 android:layout_width 和 android:layout_height 属性。如果设置为 match_parent&#xff0c;它会填满父容器&#xff1b;设置为 wrap_content&#xff0c;则会根据内容自动调整大小。例如&#xff0c;若想让 Exp…...

人工智能赋能企业系统架构设计:以ERP与CRM系统为例

一、引言 1.1 研究背景与意义 在数字化时代&#xff0c;信息技术飞速发展&#xff0c;人工智能&#xff08;Artificial Intelligence, AI&#xff09;作为一项具有变革性的技术&#xff0c;正深刻地影响着各个领域。近年来&#xff0c;AI 在技术上取得了显著突破&#xff0c;…...

使用HttpClient和HttpRequest发送HTTP请求

项目中经常会用到向第三方系统发送请求来传递数据或者获得信息&#xff0c;一般用的比较多的为HttpClient 和 HttpRequest&#xff0c;这里简要总结一下 HttpClient 和 HttpRequest 的用法 一、HttpClient 1. 发送get请求 public static String get(String url, Map<Stri…...

深度解析:网站快速收录与服务器性能的关系

本文转自&#xff1a;百万收录网 原文链接&#xff1a;https://www.baiwanshoulu.com/37.html 网站快速收录与服务器性能之间存在着密切的关系。服务器作为网站运行的基础设施&#xff0c;其性能直接影响到搜索引擎对网站的抓取效率和收录速度。以下是对这一关系的深度解析&am…...

Android记事本App设计开发项目实战教程2025最新版Android Studio

平时上课录了个视频&#xff0c;从新建工程到打包Apk&#xff0c;从头做到尾&#xff0c;没有遗漏任何实现细节&#xff0c;欢迎学过Android基础的同学参加&#xff0c;如果你做过其他终端软件开发&#xff0c;也可以学习&#xff0c;快速上手Android基础开发。 Android记事本课…...

DeepSeek-R1大模型学习笔记

DeepSeek-R1模型架构设计 DeepSeek-R1基于DeepSeek-V3 base模型&#xff0c;提出了一系列训练策略&#xff0c;包括基于纯强化学习的训练&#xff08;DeepSeek-R1-Zero&#xff09;、基于多阶段的训练和冷启动&#xff08;DeepSeek-R1&#xff09;、知识蒸馏等。下面的思维导图…...

Unity游戏(Assault空对地打击)开发(4) 碰撞体和刚体的添加

前言 飞机和世界的大小关系不太对&#xff0c;我稍微缩小了一下飞机。 详细步骤 选中所有地形对象&#xff0c;如果没有圈起的部分&#xff0c;点击Add Component搜索添加。 接着选中Player对象&#xff0c;添加这两个组件&#xff0c;最好&#xff08;仅对于本项目开发&#x…...

每日一题——滑动窗口的最大值

滑动窗口的最大值 题目描述示例说明 解题思路双端队列的特点实现步骤代码实现&#xff08;C语言&#xff09;代码解析 总结 题目描述 给定一个长度为 n 的数组 num 和滑动窗口的大小 size&#xff0c;找出所有滑动窗口里数值的最大值。 例如&#xff0c;如果输入数组 {2, 3, …...

DeepSeek 的含金量还在上升

大家好啊&#xff0c;我是董董灿。 最近 DeepSeek 越来越火了。 网上有很多针对 DeepSeek 的推理测评&#xff0c;除此之外&#xff0c;也有很多人从技术的角度来探讨 DeepSeek 带给行业的影响。 比如今天就看到了一篇文章&#xff0c;探讨 DeepSeek 在使用 GPU 进行模型训练…...

list容器(详解)

list的介绍及使用&#xff08;了解&#xff0c;后边细讲&#xff09; 1.1 list的介绍&#xff08;双向循环链表&#xff09; https://cplusplus.com/reference/list/list/?kwlist&#xff08;list文档介绍&#xff09; 1. list是可以在常数范围内在任意位置进行插入和删除的序…...

FinRobot:一个使用大型语言模型的金融应用开源AI代理平台

“FinRobot: An Open-Source AI Agent Platform for Financial Applications using Large Language Models” 论文地址&#xff1a;https://arxiv.org/pdf/2405.14767 Github地址&#xff1a;https://github.com/AI4Finance-Foundation/FinRobot 摘要 在金融领域与AI社区间&a…...

【llm对话系统】大模型 Llama 源码分析之 LoRA 微调

1. 引言 微调 (Fine-tuning) 是将预训练大模型 (LLM) 应用于下游任务的常用方法。然而,直接微调大模型的所有参数通常需要大量的计算资源和内存。LoRA (Low-Rank Adaptation) 是一种高效的微调方法,它通过引入少量可训练参数,固定预训练模型的权重,从而在保持性能的同时大…...

为AI聊天工具添加一个知识系统 之86 详细设计之27 数据处理:ETL

本文要点 ETL 数据提取 作为 数据项目的起点。数据的整个三部曲--里程碑式的发展进程&#xff1a; ETL : 1分形 Type()-层次Broker / 2完形 Method() - 维度Delegate /3 整形 Class() - 容器 Agent 1变象。变象 脸谱Extractor - 缠度&#xff08;物理 皮肤缠度&#xf…...