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

STL库中list的使用与迭代器的实现

STL库中list的使用与迭代器的实现

  • 1.使用list中的部分函数
    • assign
    • splice
    • remove
    • unique
    • meger
  • 2.list的部分功能实现(重点)
    • 框架
    • 迭代器的实现

1.使用list中的部分函数

assign

在这里插入图片描述

功能一:当前链表的节点全部销毁,替换成迭代区间的值
功能二:当前链表的节点全部销毁,替换成 n 个 val

list<int> l1 = { 1,2,3,4 };
list<int> l2 = { 100,200,300,400 };l1.assign(l2.begin(), l2.end());
for (auto e : l1)
{cout << e << ' ';
}
cout << endl;
l1.assign(5, 2);
for (auto e : l1)
{cout << e << ' ';
}
cout << endl;

在这里插入图片描述

splice

在这里插入图片描述
功能一:把整个链表接在 position 这个迭代器的前面
功能二:把链表中的某一个迭代器接在 position 前
功能三:把链表中的某一段区间接在 position 前

list<int> l1 = { 1,2,3,4,500 };
list<int> l2 = { 100,200,300,400 };
l1.splice(--l1.end(), l2);
for (const auto& e : l1)
{cout << e << ' ';
}
cout << endl;l1 = { 1,2,3,4,500 };
l1.splice(--l1.end(), l2, l2.begin(), l2.end());
for (const auto& e : l1)
{cout << e << ' ';
}
cout << endl;l1 = { 1,2,3,4,500 };
list<int>::iterator it1 = find(l1.begin(), l1.end(), 500);
l1.splice(l1.begin(), l1, it1);
for (const auto& e : l1)
{cout << e << ' ';
}
cout << endl;

在这里插入图片描述

remove

删除某个元素

list<int> l1 = { 1,2,3,4,1,1,3 };
l1.remove(1);
for (auto e : l1)
{cout << e << ' ';
}
cout << endl;

在这里插入图片描述

unique

功能一:删除重复项
共能二:删除满足某些条件的的项。
使用前提:数据得先排序,再使用,否则会出现以下错误。(1和3 没有被删干净)
在这里插入图片描述
正确使用:

list<int> l1 = { 1,2,3,4,1,1,3 };
l1.sort();
l1.unique();
for (auto e : l1)
{cout << e << ' ';
}
cout << endl;

在这里插入图片描述

注意:
学习vector和string的时候排序是使用的< algorithm >中的sort
但是链表中为什么有自己的排序?
链表的迭代器是双向迭代器,它不支持随机访问。
所以链表中写了自己的排序
但是链表的排序太慢了,数据多的情况下一般不使用链表的排序。
先把链表的值赋给 vector 然后再用< algorithm >中的 sort 排序,把排序好的数据拷贝回 list 中即可

list<int> l1 = { 1,2,3,4,1,1,3 };
vector<int> v1(l1.begin(), l1.end());
sort(v1.begin(), v1.end());
l1.assign(v1.begin(),v1.end());l1.unique();
for (auto e : l1)
{cout << e << ' ';
}
cout << endl;

在这里插入图片描述

meger

合并两个有序链表
前提条件:这两个链表必须有序。

list<int> l1 = { 5,4,3,2,1 };
list<int> l2 = { 1,2,3,4,5 };
l1.sort();
l2.sort();
l1.merge(l2);
for (auto e : l1)
{cout << e << ' ';
}
cout << endl;

在这里插入图片描述

2.list的部分功能实现(重点)

框架

链表的节点,遍历的链表的头节点,链表的尾插

namespace cx
{template<class T>struct ListNode{T _data;ListNode<T>* _prev;ListNode<T>* _next;ListNode(const T& data = T()):_data(data), _prev(nullptr), _next(nullptr){}};template<class T>class list{public:typedef ListNode<T> Node;void empty_init(){_head = new Node;_head->_prev = _head;_head->_next = _head;}list(){empty_init();}void push_back(const T& x){Node* newnode = BuyNode(x);Node* tail = _head->_prev;newnode->_prev = tail;newnode->_next = _head;_head->_prev = newnode;tail->_next = newnode;}private:Node* _head;};
}

迭代器的实现

我们要想使用迭代器输出链表就得先实现迭代器

for(auto e:l1)
{cout << e << endl;
}

对于vector与string的迭代器可以直接使用 T* ,是因为vector与list元素间的地址是连续的。
但是链表的地址是随机的,使用 T*,迭代器++,迭代器会跳过node大小的字节,指向下一块地址,会野指针。
需要封装一下 node 使迭代器的++,就是指向node的下一个元素。
迭代器的具体实现如下。

template<class T,class Ref,class Ptr>
struct ListIterator
{typedef ListNode<T> Node;typedef ListIterator<T,Ref,Ptr> Self;Node* _node;ListIterator(Node* node):_node(node){}Self& operator++(){_node = _node->_next;return *this;}Self& operator--(){_node = _node->_prev;return *this;}Self operator++(int){Self tmp(*this);_node = _node->_next;return tmp;}Self& operator--(int){Self tmp(*this);_node = _node->_prev;return tmp;}Ref operator*() {return _node->_data;}Ptr operator->(){return &_node->_data;}bool operator!=(const Self& it){return _node != it._node;}bool operator==(const Self& it){return _node == it._node;}
};

Ref 就是 reference 引用的意思,Ptr 就是返回一个指针
这样写的好处是,如果使用的对象是const类型,那么传值的时候就使用const类型。Ref与Ptr接收的就是const类型,返回的 Ref 与 Ptr 也是 const 类型

然后这个运算符的重载还需要理解一下

Ptr operator->()
{return &_node->_data;
}

在这里插入图片描述
有了迭代器的类,我们就可以写begin,end函数了

typedef ListIterator<T, T&, T*> iterator;
typedef ListIterator<T, const T&, const T*> const_iterator;iterator begin()
{return iterator(_head->_next);
}iterator end()
{return iterator(_head);
}const_iterator begin() const
{return const_iterator(_head->_next);
}const_iterator end() const
{return const_iterator(_head);
}

相关文章:

STL库中list的使用与迭代器的实现

STL库中list的使用与迭代器的实现 1.使用list中的部分函数assignspliceremoveuniquemeger 2.list的部分功能实现&#xff08;重点&#xff09;框架迭代器的实现 1.使用list中的部分函数 assign 功能一&#xff1a;当前链表的节点全部销毁&#xff0c;替换成迭代区间的值 功能二…...

android 常用三方框架

说实话&#xff0c; 我是比较讨厌三方框架的&#xff0c; 比如一个eventbus 底层逻辑就是个观察者模式&#xff0c;当然他的场景涵盖的比较丰富&#xff0c; 单从 单一原则来说&#xff0c; 还是一个简单的观察者模式就能解决问题&#xff0c; 何必要添加那么多文件到我们的项目…...

Browser.js断点续传上传

通过断点续传上传的方式将文件上传到OSS前&#xff0c;您可以指定断点记录点。上传过程中&#xff0c;如果出现网络异常或程序崩溃导致文件上传失败时&#xff0c;将从断点记录处继续上传未上传完成的部分。 attention&#xff1a; 1、 当您使用webpack或browserify等打包工具…...

Java项目实战II基于微信小程序的无中介租房系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 随着城市化进程的加速&#xff0c;租房市场日益繁荣&a…...

了解Cocoa Touch框架与主要组件

Cocoa Touch框架详解及其主要组件 一、Cocoa Touch框架概述 Cocoa Touch框架是苹果公司为iOS应用程序开发提供的一套完整的框架&#xff0c;它基于Cocoa框架&#xff0c;并专为触控设备如iPhone、iPad等设计。这套框架不仅包含了构建图形用户界面&#xff08;GUI&#xff09;…...

ISO45001职业健康安全管理体系涵盖了丰富的内容

范围与术语 适用范围&#xff1a;明确规定了该标准适用于任何有愿望建立、实施和保持职业健康安全管理体系的组织&#xff0c;旨在使组织能够通过管理体系的有效运行&#xff0c;预防和控制职业健康安全风险&#xff0c;持续改进职业健康安全绩效。术语定义&#xff1a;对职业…...

Spring Boot 整合 Druid 并开启监控

文章目录 1. 引言2. 添加依赖3. 配置数据源4. 开启监控功能5. 自定义 Druid 配置&#xff08;可选&#xff09;6. 访问监控页面7. 注意事项8. 总结 Druid 是一个由阿里巴巴开源的高性能数据库连接池&#xff0c;它不仅提供了高效的连接管理功能&#xff0c;还自带了强大的监控和…...

【JAVA高级篇教学】第一篇:Springboot对接通义千问大模型

博主今天打算讲解下Java如何对接阿里云的通义千问大模型&#xff0c;可以自己玩玩ai问答之类的&#xff01; 目录 一、发展历程 二、API-KEY的获取与配置 三、引用SDK 四、文本模型 1.代码 2.返回数据 3.官方代码案例 五、通义千问VL 1.计量计费 六、查看API-KEY调用额…...

【Windows 同时安装 MySQL5 和 MySQL8 - 详细图文教程】

卸载 MySQL 参考文章&#xff1a; 完美解决Mysql彻底删除并重装_怎么找到mysql并卸载-CSDN博客使用命令卸载mysql_卸载mysql服务命令-CSDN博客 先管理员方式打开 cmd &#xff0c;切换到 MySQL 安装目录的 bin 文件夹下&#xff0c;执行如下命令&#xff0c;删除 MySQL 服务 my…...

Next.js 系统性教学:深入理解缓存与数据优化策略

更多有关Next.js教程&#xff0c;请查阅&#xff1a; 【目录】Next.js 独立开发系列教程-CSDN博客 目录 前言 1. 缓存的基本概念 1.1 缓存的作用 1.2 Next.js 中的缓存策略 2. Next.js 的缓存机制 2.1 请求记忆化&#xff08;Request Memoization&#xff09; 2.1.1 什…...

JAVA数据结构

1.数组 (Array): 固定大小的容器,用于存储相同类型的元素,数组在内存中是连续存储的,支持通过索引快 速访问元素。 int[] numbers = new int[10]; numbers[0] = 1;2.Java Collections Framework (JCF) JCF提供了一组接口和类用于管理和操作集合(如列表,集合,…...

力扣第96题 不同的二叉搜索树

力扣第96题 - 不同的二叉搜索树 题目描述 给定一个整数 n&#xff0c;求以 1 到 n 为节点组成的所有 不同的二叉搜索树&#xff08;BST&#xff09; 的个数。 题目分析 二叉搜索树的性质 对于一个二叉搜索树&#xff0c;以 i 为根节点&#xff1a; 左子树的节点值来自 [1, i…...

在Ubuntu上使用IntelliJ IDEA:开启你的Java开发之旅!

你好&#xff0c;年轻的学徒&#xff01;&#x1f9d1;‍&#x1f4bb; 是时候踏上进入Java开发世界的史诗之旅了&#xff0c;我们的得力助手将是强大的IntelliJ IDEA。准备好了吗&#xff1f;出发吧&#xff01; 在我们开始之前&#xff0c;我们需要下载这个工具。但是&#…...

【C语言】18. 自定义类型:结构体类型

文章目录 前言&#xff1a;一、结构体类型的声明1、结构体回顾1&#xff09;结构的声明2&#xff09;结构体变量的创建和初始化 2、结构的特殊声明3、结构的⾃引⽤ 二、结构体变量的创建和初始化1、对⻬规则2、为什么存在内存对⻬?3、修改默认对⻬数 三、结构成员访问操作符1、…...

智能租赁管理系统助力规范化住房租赁市场提升用户体验

内容概要 在当今的住房租赁市场中&#xff0c;智能租赁管理系统应运而生&#xff0c;为房东和租客带来了前所未有的便利。这套系统就像一位全能助手&#xff0c;将租赁信息、监管机制以及在线签约功能集成在一起&#xff0c;让整个过程变得流畅而高效。换句话说&#xff0c;您…...

ERROR: KeeperErrorCode = NoNode for /hbase/master

原因分析 通过上面的情景模拟&#xff0c;我们可以看到报错的原因在于zookeeper中出现问题&#xff0c;可能是zookeeper中的/hbase/master被删除&#xff0c;或者是在hbase集群启动之后重新安装了zookeeper&#xff0c;导致zookeeper中的/hbase/master节点数据异常。 1. 停止…...

springboot第84集:Java进阶之路, Netty

# kafka-map文件夹 cd /usr/local/kafka-map # 根据需求自行修改配置 vi application.yml # 启动 java -jar kafka-map.jar byte minByte -128; byte maxByte 127; 用于表示一个 8 位&#xff08;1 字节&#xff09;有符号整数。它的值范围是 -128&#xff08;-2^7&#xff0…...

DevOps持续集成

DevOps流程 第一步安装git 关闭防火墙 systemctl stop firewalld cd /usr/loacl vim docker-compose.yml docker search gitlab 拉取gitlab镜像 2.33GB docker pull gitlab/gitlab-ce:latestvim docker-compose.yml修改docker-compose.yml version: 3.1 services:gitlab:i…...

sql server log文件

确定 SQL Server 实例中具有大量 VDF 的数据库 SELECT [name], COUNT(l.database_id) AS vlf_count FROM sys.databases AS s CROSS APPLY sys.dm_db_log_info(s.database_id) AS l GROUP BY [name] HAVING COUNT(l.database_id) > 100; 在收缩日志文件之前确定事务日志中…...

pip install报错 Missing dependencies for SOCKS support的正确解决办法:离线安装pysocks

今天准备开发python项目的时候&#xff0c;发现在pip install 的时候报错了&#xff0c;提示&#xff1a;Missing dependencies for SOCKS support&#xff0c;查遍csdn所有的回答都统一是只需要执行&#xff1a; unset all_proxy unset ALL_PROXY 然后再执行 pip install p…...

嵌入式学习(15)-stm32通用GPIO模拟串口发送数据

一、概述 在项目开发中可能会遇到串口不够用的情况这时候可以用通过GPIO来模拟串口的通信方式。 二、协议格式 按照1位起始位8位数据位1位停止位的方式去编写发送端的程序。起始位拉低一个波特率的时间&#xff1b;发送8位数据&#xff1b;拉高一个波特率的时间。 三、代码 …...

AKE 安全模型:CK, CK+, eCK

参考文献&#xff1a; [BCK98] Mihir Bellare, Ran Canetti, Hugo Krawczyk. A Modular Approach to the Design and Analysis of Authentication and Key Exchange Protocols (Extended Abstract). STOC 1998: 419-428.[CK01] Ran Canetti, Hugo Krawczyk. Analysis of Key-E…...

【Linux】通过crond服务设置定时执行shell脚本,实际执行时间却延迟了8小时

一、问题描述 通过使用crond服务设置定时任务&#xff0c;在每天凌晨的2:00执行脚本&#xff0c;但检查结果时发现&#xff0c;实际执行时间却在上午10点。 检查shell脚本执行结果发现&#xff0c;实际执行脚本时间在上午10:00&#xff0c;延迟了8小时。 检查系统时间&#xf…...

什么是云原生数据库 PolarDB?

云原生数据库 PolarDB 是阿里云推出的一款高性能、兼容性强、弹性灵活的关系型数据库产品。它基于云原生架构设计&#xff0c;结合分布式存储和计算分离的技术优势&#xff0c;为用户提供强大的计算能力、卓越的可靠性以及高性价比的数据库解决方案。PolarDB 适合各种业务场景&…...

(6)JS-Clipper2之ClipperOffset

1. 描述 ClipperOffset类封装了对打开路径和关闭路径进行偏移(膨胀/收缩)的过程。 这个类取代了现在已弃用的OffsetPaths函数&#xff0c;该函数不太灵活。可以使用不同的偏移量(增量)多次调用Execute方法&#xff0c;而不必重新分配路径。现在可以在一次操作中对开放和封闭路…...

基于51单片机64位病床呼叫系统设计( proteus仿真+程序+设计报告+原理图+讲解视频)

基于51单片机病床呼叫系统设计( proteus仿真程序设计报告原理图讲解视频&#xff09; 仿真图proteus7.8及以上 程序编译器&#xff1a;keil 4/keil 5 编程语言&#xff1a;C语言 设计编号&#xff1a;S0095 1. 主要功能&#xff1a; 基于51单片机的病床呼叫系统proteus仿…...

工业智能网关如何为企业实现智能制造赋能?

在数字化转型的浪潮中&#xff0c;工业智能网关作为连接物理世界与数字世界的桥梁&#xff0c;正逐步成为智能制造领域的核心组件。本文将通过一个实际使用案例&#xff0c;深入剖析工业智能网关如何助力企业实现生产流程的优化、数据的高效采集与分析&#xff0c;以及智能化决…...

【Spring项目】表白墙,留言板项目的实现

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;项目实现准备 1&#xff1a;需求 2&#xff1a;准备工作 &#xff08;1&#xff09;…...

Java-WebSocket

文章目录 WebSocket概念SpringBoot实现一个WebSocket示例STOMP消息订阅和发布后端主动发送消息 跨域 WebSocket概念 应用层协议&#xff0c;底层采用TCP&#xff0c;特点&#xff1a;持续连接&#xff0c;有状态&#xff0c;双向通信 当客户端想要与服务器建立WebSocket连接时…...

C#请求https提示未能为 SSL/TLS 安全通道建立信任关系

System.Net.WebException: 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系 &#xff0c;这个错误通常表明你的应用程序在尝试建立一个安全的 SSL/TLS 连接时遇到了问题。这通常是由于证书验证失败引起的。证书验证失败可能有几个原因&#xff1a; 证书不受信任&#…...

pdf转word/markdown等格式——MinerU的部署:2024最新的智能数据提取工具

一、简介 MinerU是开源、高质量的数据提取工具&#xff0c;支持多源数据、深度挖掘、自定义规则、快速提取等。含数据采集、处理、存储模块及用户界面&#xff0c;适用于学术、商业、金融、法律等多领域&#xff0c;提高数据获取效率。一站式、开源、高质量的数据提取工具&…...

人工智能与机器学习:真实案例分析及其在各行业的应用前景

目录 引言 人工智能与机器学习的基础概念 人工智能的历史与演变 机器学习的算法分类 深度学习与传统机器学习的区别 行业应用案例分析 医疗健康 疾病预测与诊断 影像识别的运用 案例&#xff1a;IBM Watson在肿瘤治疗中的应用 金融服务 风险评估与欺诈检测 投资预测…...

再谈多重签名与 MPC

目录 什么是 MPC 钱包以及它们是如何出现的 多重签名和智能合约钱包已经成熟 超越 MPC 钱包 关于小队 多重签名已经成为加密货币领域的一部分&#xff0c;但近年来&#xff0c;随着 MPC&#xff08;多方计算&#xff09;钱包的出现&#xff0c;多重签名似乎被掩盖了。MPC 钱包之…...

(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验二----网络分析(超超超详细!!!)

相信实验一大家已经完成了&#xff0c;对Arcgis已进一步熟悉了&#xff0c;现在开启第二个实验 ArcMap实验--网络分析 目录 ArcMap实验--网络分析 1.1 网络分析介绍 1.2 实验内容及目的 1.2.1 实验内容 1.2.2 实验目的 2.2 实验方案 2.3 实验流程 2.3.1 实验准备 2.3.2 空间校正…...

Python、R循环神经网络RNN、指数平滑ETS、ARIMA模型预测网络流量、ATM机取款、旅游需求时间序列数据...

全文链接&#xff1a;https://tecdat.cn/?p38496 分析师&#xff1a;Pengyuan Wen 在当今经济研究与商业决策领域&#xff0c;精准的时间序列预测具有极为关键的意义。社会消费品零售总额作为反映人民消费水平以及国民经济状况的核心指标&#xff0c;其发展趋势的精准把握对中…...

通过PS和Unity制作2D动画之二:IK的使用

一、IK的概念 IK&#xff1a;Inverse Kinematics&#xff0c;反向动力学。 &#xff08;1&#xff09;正向动力学 在骨骼动画中&#xff0c;构建骨骼的方法被称为正向动力学。它的表现形式是&#xff1a;子骨骼&#xff08;关节&#xff09;的位置根据父骨骼&#xff08;关节…...

如何防御ARP欺骗 保护IP安全

在数字化浪潮席卷全球的今天&#xff0c;网络安全威胁如同暗流涌动&#xff0c;时刻考验着我们的防范能力。其中&#xff0c;ARP欺骗攻击作为一种隐蔽性强、成本低廉且危害严重的网络攻击手段&#xff0c;成为众多网络安全事件中的一颗“毒瘤”。那么我们究竟是如何防御ARP欺骗…...

浏览器插件上架流程

上回说到&#xff0c;用 AI 开发上架了个浏览器插件。有朋友想知道上架扩展有需要哪些步骤。这里做个整理&#xff0c;这篇文章结构和步骤都是 AI 整理的。里面的文案细节、推荐的工具是我自己总结&#xff0c;以前发布扩展时直接用的。有需要的话下面的文案可以直接拷贝使用。…...

Android13 USB 串口默认授权

一&#xff09;场景需求 项目中使用到了can协议控制车机功能&#xff0c;can 直接转串口&#xff0c;用USB转串口工具 cn.wch.uartlib 来实现. can 板子通过usb 插入到机器上面&#xff0c;那就是usb 协议了。 遇到问题&#xff1a; 插入can 板的usb 到机器上后&#xff0c;直…...

word实践:正文/标题/表图等的共用模板样式设置

说在前面 最近使用word新建文件很多&#xff0c;发现要给大毛病&#xff0c;每次新建一个word文件&#xff0c;标题/正文的字体、大小和间距都要重新设置一遍&#xff0c;而且每次设置这些样式都忘记了参数&#xff0c;今天记录一下&#xff0c;以便后续方便查看使用。现在就以…...

docker安装kettle(PDI)并实现web访问

我是MAC电脑M1版本&#xff0c;希望把软件交给docker进行管理&#xff0c;最近公司同事都通过kettle来实现外部数据对接&#xff0c;所以我本地也有安装kettle需求&#xff0c;在网上找到了这个解决方案操作很简单&#xff0c;但出现了无法访问的情况。我的排查方式是&#xff…...

vue自定义弹窗点击除了自己区域外关闭弹窗

这里使用到vue的自定义指令 <div class"item" v-clickoutside"clickoutside1"><div click"opencity" class"text":style"{ color: popup.iscitypop || okcitylist.length ! 0 ? #FF9500 : #000000 }">选择地区…...

【vue2】封装自定义的日历组件(三)之基础添加月份的加减定位到最新月份的第一天

我们在切换月份的时候&#xff0c;希望高亮显示在每个月的第一天上面&#xff0c;这样的效果我们要怎么来实现&#xff0c;其实也很简单&#xff0c;我们先看下实现的效果 实现效果 代码实现 原理就是获取到每月的第一天日期&#xff0c;然后再跟整个的数据进行对比&#xff…...

21天掌握javaweb-->第12天:Spring Boot项目优化与安全性

Spring Boot项目优化与安全性 1. Spring Boot性能优化 1.1 减少依赖项 评估项目的依赖项&#xff0c;并确保只引入必要的依赖。较多的依赖项可能会增加启动时间&#xff0c;因为它们需要被扫描和初始化。通过删除不需要的依赖项或仅引入必要的模块&#xff0c;可以减少类路径…...

Android —— 四大组件之Activity(一)

Android四大组件即Activity&#xff08;前台&#xff09;Service&#xff08;后台&#xff09;&#xff0c;Broadcast&#xff08;通信&#xff09;&#xff0c;ContentProvider&#xff08;数据存储&#xff09; 一、Activity Activity 充当了应用与用户互动的入口点Activity …...

Ubuntu手持司岚S2激光雷达进行建图

目前通过ros包将激光雷达数据读取之后: roslaunch rplidar_ros view_rplidar_s2.launch 再通过运行 cartographer_ros结点将代码运行起来 roslaunch cartographer_ros demo_revo_lds.launch 这里要注意, 在demo_revo_lds.launch 文件中引入的revo_lds.lua文件中要使用仿真时…...

快速了解 Aurora DSQL

上周在 AWS re:Invent大会&#xff08;类似于阿里云的云栖大会&#xff09;上推出了新的产品 Aurora DSQL[1] &#xff0c;在数据库层面提供了多区域、多点一致性写入的能力&#xff0c;兼容 PostgreSQL。并声称&#xff0c;在多语句跨区域的场景下&#xff0c;延迟只有Google …...

【Android Studio】学习——网络连接

实验&#xff1a;Android网络连接 文章目录 实验&#xff1a;Android网络连接[toc]实验目标和实验内容&#xff1a;1、掌握Android联网的基本概念&#xff1b;2、能够使用URL connection实现网络连接&#xff1b;3、掌握第三方库的基本概念4、需实现的具体功能 实验结果功能说明…...

c语言复制字符串memcpy和strncpy函数区别

memcpy 和 strncpy 的耗时区别 这两个函数在功能上有明显差异&#xff0c;导致性能和耗时也不同。以下是它们的详细对比&#xff1a; 1. 功能差异 函数功能memcpy按字节复制数据&#xff0c;不处理字符串终止符 \0&#xff0c;适用于任意数据类型的内存复制。strncpy复制字符…...

Java设计模式 —— 【创建型模式】建造者模式详解

文章目录 一、建造者模式二、案例实现三、优缺点四、模式拓展五、对比1、工厂方法模式VS建造者模式2、抽象工厂模式VS建造者模式 一、建造者模式 建造者模式&#xff08;Builder Pattern&#xff09; 又叫生成器模式&#xff0c;是一种对象构建模式。它可以将复杂对象的建造过…...