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

鸿蒙语言基础类库:【@ohos.util.Vector (线性容器Vector)】

线性容器Vector

说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。开发前请熟悉鸿蒙开发指导文档gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。

Vector是一种线性数据结构,底层基于数组实现。当Vector的内存用尽时,会自动分配更大的连续内存区,将原先的元素复制到新的内存区,并释放旧的内存区。使用Vector能够高效快速地访问元素。

Vector和[ArrayList]相似,都是基于数组实现,但Vector提供了更多操作数组的接口。它们都可以动态调整容量,但Vector每次扩容增加1倍,ArrayList只扩容0.5倍。

推荐使用场景: 当数据量大时,一般使用Vector来存取数据。

导入模块

import Vector from '@ohos.util.Vector';  

Vector

属性

系统能力: SystemCapability.Utils.Lang

名称参数类型可读可写说明
lengthnumberVector的元素个数。

constructor

constructor()

Vector的构造函数。

系统能力: SystemCapability.Utils.Lang

示例:

let vector = new Vector();

add

add(element: T): boolean

在Vector中尾部插入元素。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
elementT添加进去的元素。

返回值:

类型说明
boolean插入成功返回true,失败返回false。

示例:

let vector = new Vector();
let result = vector.add("a");
let result1 = vector.add(1);
let b = [1, 2, 3];
vector.add(b);
let c = {name : "lala", age : "13"};
let result3 = vector.add(c);

insert

insert(element: T, index: number): void

在长度范围内任意插入指定元素。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
elementT被插入的元素。
indexnumber被插入的位置索引。

示例:

let vector = new Vector();
vector.insert("A", 0);
vector.insert(0, 1);
vector.insert(true, 2);

has

has(element: T): boolean

判断此Vector中是否含有该指定元素。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
elementT指定的元素。

返回值:

类型说明
boolean是否包含指定元素。

示例:

let vector = new Vector();
let result = vector.has("Ahfbrgrbgnutfodgorrogorgrogofdfdf");
vector.add("Ahfbrgrbgnutfodgorrogorgrogofdfdf");
let result1 = vector.has("Ahfbrgrbgnutfodgorrogorgrogofdfdf");

getIndexOf

getIndexOf(element: T): number

返回指定元素第一次出现时的下标值,查找失败返回-1。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
elementT指定的元素。

返回值:

类型说明
number返回指定元素第一次出现时的下标值,查找失败返回-1。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(2);
vector.add(1);
vector.add(2);
vector.add(4);
let result = vector.getIndexOf(2);

getLastIndexOf

getLastIndexOf(element: T): number

返回指定元素最后一次出现时的下标值,查找失败返回-1。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
elementT指定元素。

返回值:

类型说明
number返回指定元素最后一次出现时的下标值,查找失败返回-1。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(2);
vector.add(1);
vector.add(2);
vector.add(4);
let result = vector.getLastIndexOf(2);

removeByIndex

removeByIndex(index: number): T

根据元素的下标值查找元素,返回元素后将其删除。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
indexnumber指定元素的下标值。

返回值:

类型说明
T返回删除的元素。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(2);
vector.add(4);
let result = vector.removeByIndex(2);

remove

remove(element: T): boolean

删除查找到的第一个指定的元素。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
elementT指定元素。

返回值:

类型说明
boolean删除成功返回true,否则返回false。

返回值:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.remove(2);

removeByRange

removeByRange(fromIndex: number, toIndex: number): void

从一段范围内删除元素,包括起始值但不包括终止值。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
fromIndexnumber起始下标。
toIndexnumber终止下标。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.removeByRange(2,4);
vector.removeByRange(4,3);
vector.removeByRange(2,6);

replaceAllElements

replaceAllElements(callbackfn: (value: T, index?: number, vector?: Vector) => T, thisArg?: Object): void

用户操作Vector中的元素,用操作后的元素替换原元素并返回操作后的元素。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
callbackfnfunction回调函数。
thisArgObjectcallbackfn被调用时用作this值。

callbackfn的参数说明:

参数名类型必填说明
valueT当前遍历到的元素。
indexnumber当前遍历到的下标值。
vectorVector当前调用replaceAllElements方法的实例对象。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.replaceAllElements((value: number, index: number) => {return value = 2 * value;
});
vector.replaceAllElements((value: number, index: number) => {return value = value - 2;
});

forEach

forEach(callbackfn: (value: T, index?: number, vector?: Vector) => void, thisArg?: Object): void

通过回调函数来遍历Vector实例对象上的元素以及元素对应的下标。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
callbackfnfunction回调函数。
thisArgObjectcallbackfn被调用时用作this值。

callbackfn的参数说明:

参数名类型必填说明
valueT当前遍历到的元素。
indexnumber当前遍历到的下标值。
vectorVector当前调用forEach方法的实例对象。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.forEach((value, index) => {console.log("value:" + value, index)
});

sort

sort(comparator?: (firstValue: T, secondValue: T) => number): void

对Vector中的元素进行一个排序操作。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
comparatorfunction回调函数。

comparator的参数说明:

参数名类型必填说明
firstValueT前一项元素。
secondValueT后一项元素。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.sort((a: number, b: number) => a - b);
vector.sort((a: number, b: number) => b - a);
vector.sort();

subVector

subVector(fromIndex: number, toIndex: number): Vector

根据下标截取Vector中的一段元素,并返回这一段vector实例,包括起始值但不包括终止值。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
fromIndexnumber起始下标。
toIndexnumber终止下标。

返回值:

类型说明
Vector返回Vector对象实例。

返回值:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.subVector(2,4);
let result1 = vector.subVector(4,3);
let result2 = vector.subVector(2,6);

clear

clear(): void

清除Vector中的所有元素,并把length置为0。

系统能力: SystemCapability.Utils.Lang

返回值:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.clear();

clone

clone(): Vector

克隆一个与Vector相同的实例,并返回克隆后的实例。修改克隆后的实例并不会影响原实例。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
Vector返回Vector对象实例。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.clone();

getCapacity

getCapacity(): number

获取当前实例的容量大小。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
number返回Vector的容量大小。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.getCapacity();

convertToArray

convertToArray(): Array

把当前Vector实例转换成数组,并返回转换后的数组。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
Array返回数组类型。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.convertToArray();

isEmpty

isEmpty(): boolean

判断该Vector是否为空。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
boolean为空返回true,否则返回false。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.isEmpty();

increaseCapacityTo

increaseCapacityTo(newCapacity: number): void

如果传入的新容量大于或等于Vector中的元素个数,将容量变更为新容量。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
newCapacitynumber新容量。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.increaseCapacityTo(2);
vector.increaseCapacityTo(8);

trimToCurrentLength

trimToCurrentLength(): void

把容量限制为当前的length大小。

系统能力: SystemCapability.Utils.Lang

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.trimToCurrentLength();

toString

toString(): string

用","将Vector实例中的元素按顺序拼接成字符串。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
string返回对应的字符串。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.toString();

copyToArray

copyToArray(array: Array): void

将Vector实例中的元素按照下标复制到指定数组。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
arrayArray指定数组。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let array = ["a", "b", "c", "d", "e", "f"];
let result = vector.copyToArray(array);

getFirstElement

getFirstElement(): T

获取实例中的第一个元素。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
T返回第一个元素。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.getFirstElement();

getLastElement

getLastElement(): T

获取Vector实例中的最后一个元素。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
T返回最后一个元素。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.getLastElement();

getLastIndexFrom

getLastIndexFrom(element: T, index: number): number

从指定索引向后搜索,返回该元素的下标索引。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
elementT要查找的元素。
indexnumber从指定索引开始搜索。

返回值:

类型说明
number返回该元素的下标,如果查找失败,则返回-1。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.add("a");
let result = vector.getLastIndexFrom(4,3);

getIndexFrom

getIndexFrom(element: T, index: number): number

从指定索引向前搜索,返回该元素的下标索引。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
elementT要查找的元素。
indexnumber从指定索引开始搜索。

返回值:

类型说明
number返回该元素的下标,如果查找失败,则返回 -1。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.add("a");
let result = vector.getIndexFrom(4, 3);

setLength

setLength(newSize: number): void

设置Vector实例的元素个数。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
newSizenumber设置的新长度。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.setLength(8);
vector.setLength(2);

get

get(index: number): T

根据下标值获取Vector实例中的元素。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
indexnumber查找的下标值。

返回值:

类型说明
T返回获取到的元素。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.get(2);

set

set(index: number, element: T): T

将此Vector中指定位置的元素替换为指定元素。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
indexnumber查找的下标值。
elementT用来替换的元素。

返回值:

类型说明 HarmonyOS与OpenHarmony鸿蒙文档籽料:mau123789是v直接拿
T返回替换后的元素。

在这里插入图片描述

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.set(2, "A");

[Symbol.iterator]

Symbol.iterator: IterableIterator

返回一个迭代器,迭代器的每一项都是一个 JavaScript 对象,并返回该对象。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
IterableIterator返回一个迭代器。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);// 使用方法一:
for (let item of vector) { console.log("value:" + item); 
} // 使用方法二:
let iter = vector[Symbol.iterator]();
let temp = iter.next().value;
while(temp != undefined) {console.log("value:" + temp);temp = iter.next().value;
}

相关文章:

鸿蒙语言基础类库:【@ohos.util.Vector (线性容器Vector)】

线性容器Vector 说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 Vect…...

使用Python绘制堆积面积图

使用Python绘制堆积面积图 堆积面积图效果代码 堆积面积图 堆积面积图是面积图的一种扩展,通过堆积多个区域展示不同类别数据的累积变化。常用于显示不同部分对整体的贡献。 效果 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pQbW4F…...

代码还原动态调试之 pstree 乘法变加法

乘法编译后&#xff0c;生成加法汇编&#xff0c;提升CPU执行效率&#xff1b; 406a: 85 ff test %edi,%edi // x ? 0406c: 0f 84 7e 00 00 00 je 40f0 <__sprintf_chkplt0x1980>*/int digits, div;if (x ! 0) {/*4072: 89 fd …...

C++:获取当前可执行核心数(开辟线程)

sysconf(_SC_NPROCESSORS_ONLN) 是一个在 POSIX 兼容系统上广泛使用的函数&#xff0c;它用于获取当前系统上可用的处理器&#xff08;CPU 核心&#xff09;的数量。这个函数是 sysconf 函数的一个特定调用&#xff0c;其中 _SC_NPROCESSORS_ONLN 是一个常量&#xff0c;指定了…...

【简历】吉林某985大学:JAVA实习简历指导,面试通过率相当低

注&#xff1a;为保证用户信息安全&#xff0c;姓名和学校等信息已经进行同层次变更&#xff0c;内容部分细节也进行了部分隐藏 简历说明 这份简历是一个顶级985吉林大学的同学投Java职位的简历。因为学校是顶级985&#xff0c;所以他的大厂简历通过率是比较高的&#xff0c;…...

C#中的MD5摘要算法与哈希算法

文章目录 一、哈希算法基础二、MD5 算法原理三、MD5摘要算法四、哈希算法五、C#实现示例MD5算法示例哈希算法示例字符串MD5值对比 六、总结 一、哈希算法基础 哈希算法是一种单向密码体制&#xff0c;它将任意长度的数据转换成固定长度的字符串。这种转换是不可逆的&#xff0…...

使用 python 构建企业级高可用海量爬虫调度系统

一、引言 在大数据时代&#xff0c;信息的获取与分析成为了企业决策的重要依据。对于营销行业而言&#xff0c;实时抓取和分析竞争对手动态、市场趋势以及用户反馈等数据&#xff0c;是制定有效策略的关键。然而&#xff0c;构建一个高可用的、能够处理海量数据的爬虫调度系统…...

IDEA常用技巧荟萃:精通开发利器的艺术

1 概述 在现代软件开发的快节奏环境中&#xff0c;掌握一款高效且功能全面的集成开发环境&#xff08;IDE&#xff09;是提升个人和团队生产力的关键。IntelliJ IDEA&#xff0c;作为Java开发者的首选工具之一&#xff0c;不仅提供了丰富的编码辅助功能&#xff0c;还拥有高度…...

GD32F303之CAN通信

1、CAN时钟 GD32F303主时钟频率最大是120Mhz,然后APB1时钟最大是60Mhz,APB2时钟最大是120Mhz,CAN挂载在APB1总线上面 所以一般CAN的时钟频率是60Mhz,这个频率和后面配置波特率有关 2、GD32F303时钟配置 首先我们知道芯片有几个时钟 HXTAL&#xff1a;高速外部时钟&#xff1…...

postgres 的dblink使用,远程连接数据库

一.安装下载 dblink create extension if not exists dblink 查看是否已经安装 select * from pg_extension;二.运行&#xff0c;查询数据 其中&#xff0c;第一个参数是dblink名字&#xff0c;也可以是连接字符串。 第二个参数是要执行的SQL查询语句。AS子句用于指定返回结…...

短视频矩阵系统是什么?怎么搭建短视频矩阵系统?一文了解矩阵模式

在数字时代&#xff0c;短视频已成为信息传播的新宠&#xff0c;而短视频矩阵系统则是品牌和个人在短视频领域取得突破的重要工具。那么&#xff0c;短视频矩阵系统究竟是什么&#xff1f;如何搭建这样一个高效的系统&#xff1f;它又能够解决哪些问题呢&#xff1f;本文将为您…...

查看centos硬盘大小

直接上命令 lsblk...

2024 年 6 月公链行业研报:市场回调,比特币和以太坊 Layer 2 表现各异

作者&#xff1a;stellafootprint.network 数据来源&#xff1a;公链 Research 页面 六月&#xff0c;加密货币市场经历了显著的挑战。比特币因即将到来的 Mt. Gox 赔偿支付及政府清算的压力&#xff0c;导致市场不确定性加剧。尽管美国现货以太坊 ETF 的推进带来了积极信号…...

SAP S4 销售组的定义和分配

spro-企业结构-定义-销售与分销-维护销售组 新增一个记录 spro-企业结构-分配-销售与分销-给销售办公室分配销售组...

实时数仓和离线数仓的区别是什么,企业该如何选择合适的数仓架构?

目录 一、离线数仓 1. 离线数仓是什么&#xff1f; 2. 离线数仓的特点 3. 离线数仓的适用场景 二、实时数仓 1. 实时数仓是什么&#xff1f; 2. 实时数仓的特点 3. 实时数仓的适用场景 三、由数仓需求变化带来的数据仓库架构的演变 1. 传统数仓架构 2. 离线大数据架构 3. Lambd…...

花所Flower非小号排名20名下载花所Flower

1、Flower花所介绍 Flower花所是一家新兴的数字货币交易平台&#xff0c;致力于为全球用户提供安全、便捷的交易体验。平台以其强大的技术支持和丰富的交易产品闻名&#xff0c;为用户提供多样化的数字资产交易服务&#xff0c;涵盖了主流和新兴数字货币的交易需求。 2. Flowe…...

程序员有哪些职位?

互联网行业中的岗位种类繁多、五花八门&#xff0c;学习一门技术后&#xff0c;重要的是找到合适的职业发展方向&#xff0c;程序员有哪些职业发展方向&#xff1f;一起来看看吧&#xff01; 1.架构师 架构师需要程序员有强大的技术实力和深厚的技术积累。建筑师的成长需要经…...

python+Selenium自动化之免登录(cookie及token)

目录 cookie免登录 通过接口获取cookie 启用浏览器绕过登录 添加token 使用登录可以减去每次登录的重复操作&#xff0c;直接操作系统登录后的菜单页面&#xff0c;也可以减少安全验证登录&#xff0c;如图像验证登录的操作。注意&#xff1a;cookie和token都有有效期。 c…...

Web安全:SQL注入

一、SQL注入三要素 1、用户可以对输入的参数值进行修改。 2、后端不对用户输入的参数值进行严格过滤。 3、用户修改后的参数值可以被带入后端中成功执行&#xff0c;并返回一定结果。 二、SQL注入原理 简单来说&#xff0c;用户输入的值会被插入到SQL语句中&#xff0c;然后…...

【LLM-驯化】成功配置多模态大模型InternLM-XComposer微调环境

【LLM-驯化】成功配置多模态大模型InternLM-XComposer微调环境 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 免费获取相关内容文档关注&am…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

快刀集(1): 一刀斩断视频片头广告

一刀流&#xff1a;用一个简单脚本&#xff0c;秒杀视频片头广告&#xff0c;还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农&#xff0c;平时写代码之余看看电影、补补片&#xff0c;是再正常不过的事。 电影嘛&#xff0c;要沉浸&#xff0c;…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

DiscuzX3.5发帖json api

参考文章&#xff1a;PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下&#xff0c;适配我自己的需求 有一个站点存在多个采集站&#xff0c;我想通过主站拿标题&#xff0c;采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...

TCP/IP 网络编程 | 服务端 客户端的封装

设计模式 文章目录 设计模式一、socket.h 接口&#xff08;interface&#xff09;二、socket.cpp 实现&#xff08;implementation&#xff09;三、server.cpp 使用封装&#xff08;main 函数&#xff09;四、client.cpp 使用封装&#xff08;main 函数&#xff09;五、退出方法…...

leetcode73-矩阵置零

leetcode 73 思路 记录 0 元素的位置&#xff1a;遍历整个矩阵&#xff0c;找出所有值为 0 的元素&#xff0c;并将它们的坐标记录在数组zeroPosition中置零操作&#xff1a;遍历记录的所有 0 元素位置&#xff0c;将每个位置对应的行和列的所有元素置为 0 具体步骤 初始化…...