C#既然数组长度不可改变,那么如何动态调整集合类型数组大小,以便添加或删除元素?
目录
1.使用动态数组(ArrayList):
2.使用 jagged array(不规则数组):
3.使用 List :
4.使用数组复制:
在C#中,数组的长度是固定的,一旦声明和初始化,就不能更改。但是,您可以使用其他集合类型,例如ArrayList或List<T>,这些类型可以动态调整大小以添加或删除元素。
1.使用动态数组(ArrayList):
动态数组是一种可以在运行时改变大小的数组。当你需要添加或删除元素时,它会自动调整自身的大小。
// 使用 ArrayList 可以动态调整数组的大小。
using System.Collections;namespace _106_8
{class Program{static void Main(string[] args){ArgumentNullException.ThrowIfNull(args);// 初始化 ArrayListArrayList arrayList =[new int[] { 1, 2 },new int[] { 3, 4, 5 },new int[] { 6, 7, 8, 9 },];// 打印原始数组Console.WriteLine("原始数组:");PrintArray(arrayList);// 添加新行Console.WriteLine();// 动态调整数组大小arrayList.Capacity = 5;// 初始化新数组arrayList.Add(new int[] { 10, 11 });arrayList.Add(new int[] { 12, 13, 14 });// 打印调整大小后的数组Console.WriteLine("调整大小后的数组:");PrintArray(arrayList);}static void PrintArray(ArrayList array){foreach (var row in array){Console.Write("[" + string.Join(", ", (int[])row) + "]");Console.WriteLine();}}}
}
//运行结果:
/*
原始数组:
[1, 2]
[3, 4, 5]
[6, 7, 8, 9]调整大小后的数组:
[1, 2]
[3, 4, 5]
[6, 7, 8, 9]
[10, 11]
[12, 13, 14]*/
2.使用 jagged array(不规则数组):
jagged array 是一种数组的数组,它可以用来模拟可变大小的数组。jaggedArray 的大小是可变的,你可以根据需要改变它。
首先创建了一个 jagged array,并初始化了一些数据。然后,使用 ResizeArray 函数将 jaggedArray 的大小调整为 5,然后添加了一些新的数据。最后,使用 PrintArray 函数打印了调整大小后的数组。
注意,这种方法并不会真正改变 jagged array 中每个子数组的大小,而是通过创建一个新的 jagged array 来实现动态调整大小的效果。如果你需要在运行时真正地改变数组的大小,可以考虑使用其他数据结构,如动态数组(ArrayList)。
// 使用 jagged array(不规则数组)
// 可以实现动态调整数组大小的效果
namespace _106_7
{class Program{static void Main(string[] args){ArgumentNullException.ThrowIfNull(args);// 初始化 jaggedArrayint[][] jaggedArray =[[1, 2],[3, 4, 5],[6, 7, 8, 9],];// 打印原始数组Console.WriteLine("原始数组:");PrintArray(jaggedArray);// 添加新行Console.WriteLine();// 动态调整数组大小jaggedArray = ResizeArray(jaggedArray, 5);// 初始化新数组jaggedArray[3] = [10, 11];jaggedArray[4] = [12, 13, 14];// 打印调整大小后的数组Console.WriteLine("调整大小后的数组:");PrintArray(jaggedArray);}static int[][] ResizeArray(int[][] jaggedArray, int newSize){int[][] newArray = new int[newSize][];Array.Copy(jaggedArray, newArray, Math.Min(jaggedArray.Length, newSize));return newArray;}static void PrintArray(int[][] array){foreach (var row in array){Console.Write("[" + string.Join(", ", row) + "]");Console.WriteLine();}}}
}
//运行结果:
/*
原始数组:
[1, 2]
[3, 4, 5]
[6, 7, 8, 9]调整大小后的数组:
[1, 2]
[3, 4, 5]
[6, 7, 8, 9]
[10, 11]
[12, 13, 14]*/
3.使用 List<T> :
使用 List<T> 也可以动态调整数组的大小。
首先创建了一个 List<int[]>,并初始化了一些数据。然后,使用 Capacity
属性将 List<int[]> 的大小调整为 5,然后添加了一些新的数据。最后,我们使用 PrintArray
函数打印了调整大小后的数组。
注意,这种方法会真正地改变 List<int[]> 中每个子数组的大小,因为它会动态地分配和释放内存。但是,由于 List<int[]> 是基于对象的,所以它比数组更慢,如果你需要更高的性能,可以考虑使用其他数据结构,如数组。
// 使用 List<T> 也可以动态调整数组的大小namespace _106_9
{class Program{static void Main(string[] args){ArgumentNullException.ThrowIfNull(args);// 初始化 List<int[]>List<int[]> list =[[1, 2],[3, 4, 5],[6, 7, 8, 9],];// 打印原始数组Console.WriteLine("原始数组:");PrintArray(list);// 添加新行Console.WriteLine();// 动态调整数组大小list.Capacity = 5;// 初始化新数组list.Add([10, 11]);list.Add([12, 13, 14]);// 打印调整大小后的数组Console.WriteLine("调整大小后的数组:");PrintArray(list);}static void PrintArray(List<int[]> list){foreach (var row in list){Console.Write("[" + string.Join(", ", row) + "]");Console.WriteLine();}}}
}
//运行结果:
/*
原始数组:
[1, 2]
[3, 4, 5]
[6, 7, 8, 9]调整大小后的数组:
[1, 2]
[3, 4, 5]
[6, 7, 8, 9]
[10, 11]
[12, 13, 14]*/
4.使用数组复制:
创建一个新的数组,将旧数组的元素复制到新数组中,然后释放旧数组。这是一种比较低效的方法,但在某些情况下可能会有用。
// 复制旧数组并增加数组长度
namespace _106_7
{class Program{static void Main(string[] args){ArgumentNullException.ThrowIfNull(args);int[] oldArray = new int[10];//... 初始化 oldArrayint[] newArray = new int[oldArray.Length * 2];Array.Copy(oldArray, newArray, oldArray.Length);int newlength = newArray.Length;Console.WriteLine("新数组长度= {0}", newlength);}}
}
//运行结果:
/*
新数组长度= 20*/
相关文章:
C#既然数组长度不可改变,那么如何动态调整集合类型数组大小,以便添加或删除元素?
目录 1.使用动态数组(ArrayList): 2.使用 jagged array(不规则数组): 3.使用 List : 4.使用数组复制: 在C#中,数组的长度是固定的,一旦声明和初始化&…...
3.1 Verilog 连续赋值
关键词:assign, 全加器 连续赋值语句是 Verilog 数据流建模的基本语句,用于对 wire 型变量进行赋值。: 格式如下 assign LHS_target RHS_expression ; LHS(left hand side) 指赋值操作…...
【http】2、http request header Origin 属性、跨域 CORS、同源、nginx 反向代理、预检请求
文章目录 一、Origin 含义二、跨源资源共享:**Cross-Origin Resource Sharing** CORS2.1 跨域的定义2.2 功能概述2.3 场景示例2.3.1 简单请求2.3.2 Preflighted requests:预检请求 2.4 header2.4.1 http request header2.4.1.1 Origin2.4.1.2 Access-Con…...
LangChain pdf的读取以及向量数据库的使用
以下使用了3399.pdf, Rockchip RK3399 TRM Part1 import ChatGLM from langchain.chains import LLMChain from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import ChatPromptTemplate from langchain.chains import Simp…...
VUE学习——事件修饰符
阻止默认事件 <template><a click"onClickHandle" href"https://www.baidu.com">baidu</a><a click.prevent"onClickHandle" href"https://www.baidu.com">baidu</a> </template> <script>…...
开放平台技术架构设计与实现的实战总结
开放平台是企业向外部开发者提供API接口和服务的平台,促进生态系统的建设和业务拓展。本文将介绍开放平台技术架构的设计原则和实现方法,帮助读者了解如何构建一个稳健、安全且易于扩展的开放平台。 1. 什么是开放平台? - 解释了开放平台…...
飞桨自然语言处理框架 paddlenlp的 trainer
飞桨(PaddlePaddle)的NLP库PaddleNLP中的Trainer类是一个用于训练和评估模型的简单但功能完整的循环。它被优化用于与PaddleNLP一起使用。Trainer类简化了训练过程,提供了自动的批处理、模型保存、日志记录等特性。 以下是Trainer类的主要参数…...
SQL世界之命令语句Ⅲ
目录 一、SQL JOIN 1.JOIN 和 Key 2.使用 JOIN 3.不同的 SQL JOIN 二、SQL INNER JOIN 关键字 1.SQL INNER JOIN 关键字 2.INNER JOIN 关键字语法 3.内连接(INNER JOIN)实例 三、SQL LEFT JOIN 关键字 1.SQL LEFT JOIN 关键字 2.LEFT JOIN 关…...
Snoop Version 2 Packet Capture File Format
RFC1761 - Snoop Version 2 Packet Capture File Format, FEBRUARY 1995 本备忘录的状态 本备忘录为互联网社区提供帮助信息。 本备忘录不作为任何类型的互联网标准。 本备忘录的分发不受限制。 Status of this Memo This memo provides information for the Internet communit…...
扩展说明: 指令微调 Llama 2
这篇博客是一篇来自 Meta AI,关于指令微调 Llama 2 的扩展说明。旨在聚焦构建指令数据集,有了它,我们则可以使用自己的指令来微调 Llama 2 基础模型。 目标是构建一个能够基于输入内容来生成指令的模型。这么做背后的逻辑是,模型如…...
VUE 全局设置防重复点击
请求后端防止重复点击,用户点击加入遮罩层,请求完毕关闭遮罩层 我们利用请求拦截器,在用户点击的时候,弹出遮罩层 本文采用i18n国际化 element plus UI,提取你想要的,这里不做简化 完整代码如下…...
备战蓝桥杯---动态规划(基础1)
先看几道比较简单的题: 直接f[i][j]f[i-1][j]f[i][j-1]即可(注意有马的地方赋值为0) 下面是递推循环方式实现的AC代码: #include<bits/stdc.h> using namespace std; #define int long long int a[30][30]; int n,m,x,y; …...
CVE-2018-19518 漏洞复现
CVE-2018-19518 漏洞介绍 IMAP协议(因特网消息访问协议)它的主要作用是邮件客户端可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。它运行在TCP/IP协议之上,使用的端口是143。在php中调用的是imap_open函数。 PHP 的…...
Python爬虫实战:抓取猫眼电影排行榜top100#4
爬虫专栏系列:http://t.csdnimg.cn/Oiun0 抓取猫眼电影排行 本节中,我们利用 requests 库和正则表达式来抓取猫眼电影 TOP100 的相关内容。requests 比 urllib 使用更加方便,而且目前我们还没有系统学习 HTML 解析库,所以这里就…...
Fiddler抓包工具之fiddler界面工具栏介绍
Fiddler界面工具栏介绍 (1)WinConfig:windows 使用了一种叫做“AppContainer”的隔离技术,使得一些流量无法正常捕获,在 fiddler中点击 WinConfig 按钮可以解除这个诅咒,这个与菜单栏 Tools→Win8 Loopback…...
LabVIEW工业监控系统
LabVIEW工业监控系统 介绍了一个基于LabVIEW软件开发的工业监控系统。系统通过虚拟测控技术和先进的数据处理能力,实现对工业过程的高效监控,提升系统的自动化和智能化水平,从而满足现代工业对高效率、高稳定性和低成本的需求。 随着工业自…...
Linux 文件连接:符号链接与硬链接
Linux 文件连接:符号链接与硬链接 介绍 在 Linux 系统中,文件连接是一个强大的概念,它允许我们在文件系统中创建引用,从而使得文件和目录之间产生联系。在本文中,我们将深入探讨两种主要类型的文件连接:符…...
数据分类分级
一段时间没写文章了,最近做政府数据治理方面的项目,数据治理一个重要的内容是数据安全,会涉及数据的分类分级,是数据治理的基础。 随着“十四五”规划推行,数据要素概念与意识全面铺开,国家、政府机构、企业…...
第三十天| 51. N皇后
Leetcode 51. N皇后 题目链接:51 N皇后 题干:按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整…...
pythn-scipy 查漏补缺
1. 2. 3. 4. 5. 6. 7. 8. 9. 偏度 skewness,峰度 kurtosis...
【JavaScript 漫游】【013】Date 对象知识点摘录
文章简介 本文为【JavaScript 漫游】专栏的第 013 篇文章,记录了 JS 语言中 Date 对象的重要知识点。 普通函数的用法构造函数的用法日期的运算静态方法,包括:Date.now()、Date.parse() 和 Date.UTC()实例方法,包括:…...
vue.config.js和webpack.config.js区别
webpack.config.js和vue.config.js的区别 webpack.config.js是webpack的配置文件,所有使用webpack作为打包工具的项目都可以使用,vue的项目可以使用,react的项目也可以使用。 vue.config.js是vue项目的配置文件,专用于vue项目。…...
H12-821_73
73.某台路由器Router LSA如图所示,下列说法中错误的是? A.本路由器的Router ID为10.0.12.1 B.本路由器为DR C.本路由器已建立邻接关系 D.本路由器支持外部路由引入 答案:B 注释: LSA中的链路信息Link ID,Data…...
postman执行批量测试
1.背景 有许多的人常常需要使用第三方系统进行重复的数据查询,本文介绍使用PostMan的方式对数据进行批量的查询,减少重复的劳动。 2.工具下载 3.初入门 一、如图示进行点击,创建collection 二、输入对应的名称 三、创建Request并进行查…...
蓝桥杯基础知识8 list
蓝桥杯基础知识8 list 01 list 的定义和结构 lits使用频率较低,是一种双向链表容器,是标准模板库(STL)提供的一种序列容器,lsit容器以节点(node)的形式存储元素,使用指针将这些节点链…...
【DDD】学习笔记-理解领域模型
Eric Evans 的领域驱动设计是对软件设计领域的一次重新审视,是在面向对象语言大行其道时对数据建模的“拨乱反正”。Eric 强调了模型的重要性,例如他在书中总结了模型在领域驱动设计中的作用包括: 模型和设计的核心互相影响模型是团队所有成…...
v-if 和v-show 的区别
第074个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 提供vue2的一些基本操作:安装、引用,模板使用,computed&a…...
LabVIEW网络测控系统
LabVIEW网络测控系统 介绍了基于LabVIEW的网络测控系统的开发与应用,通过网络技术实现了远程的数据采集、监控和控制。系统采用LabVIEW软件与网络通信技术相结合,提高了系统的灵活性和扩展性,适用于各种工业和科研领域的远程测控需求。 随着…...
攻防世界 CTF Web方向 引导模式-难度1 —— 11-20题 wp精讲
PHP2 题目描述: 暂无 根据dirsearch的结果,只有index.php存在,里面也什么都没有 index.phps存在源码泄露,访问index.phps 由获取的代码可知,需要url解码(urldecode )后验证id为admin则通过 网页工具不能直接对字母进行url编码 …...
华为Eth-Trunk级联堆叠接入IPTV网络部署案例
Eth-Trunk级联堆叠接入IPTV网络部署案例 组网图形 图2 Eth-Trunk级联堆叠IPTV基本组网图 方案简介配置注意事项组网需求数据规划配置思路操作步骤配置文件 方案简介 随着IPTV业务的迅速发展,IPTV平台承载的用户也越来越多,用户对IPTV直播业务的可靠性…...
idea: 无法创建Java Class文件(SpringBoot)已解决
第一:点击file-->project Sructure... 第二步:点击Moudules 选择自己需要创建java的文件夹(我这里选择的是main)右键点击Sources,然后点击OK即可 然后就可以创建java类了...
ChinaXiv:中科院科技论文预发布平台
文章目录 Main彩蛋 Main 主页:https://chinaxiv.org/home.htm 彩蛋...
【人工智能】Fine-tuning 微调:解析深度学习中的利器(7)
在深度学习领域,Fine-tuning 微调是一项重要而强大的技术,它为我们提供了在特定任务上充分利用预训练模型的途径。本文将深入讨论 Fine-tuning 的定义、原理、实际操作以及其在不同场景中的应用,最后简要探讨Fine-tuning 的整体架构。 1. Fi…...
黄金交易策略(Nerve Nnife):大K线对技术指标的影响
我们使用heiken ashi smoothed来做敏感指标(大趋势借助其转向趋势预判,但不是马上转变),has默认使用6根k线的移动平均值来做计算的。若在6根k线规范内有一个突变的行情(k线很长),那么整个行情的…...
django中实现数据迁移
在Django中,数据迁移(data migrations)通常指的是将模型(models)中的数据从一个状态迁移到另一个状态。这可以涉及很多操作,比如添加新字段、删除字段、更新字段的数据类型,或者更改表之间的关系…...
全新抖音快手小红书去水印系统网站源码 | 支持几十种平台
全新抖音快手小红书去水印系统网站源码 | 支持几十种平台...
ChatGPT炸裂了
优质内容:ChatGPT太炸裂了 hello,我是小索奇 很多人在使用ChatGPT时遇到了两个主要问题,导致他们觉得这个工具并没有带来太多实际价值。首先,许多人发现ChatGPT的回答缺乏深度,缺乏实用性。其次,一些人在使…...
小白代码审计入门
最近小白一直在学习代码审计,对于我这个没有代码审计的菜鸟来说确实是一件无比艰难的事情。但是着恰恰应了一句老话:万事开头难。但是小白我会坚持下去。何况现在已经喜欢上了代码审计,下面呢小白就说一下appcms后台模板Getshell以及读取任意文件,影响的版本是2.0.101版本。…...
[开源]GPT Boss – 用图形化的方式部署您的私人GPT镜像网站
在这个以数据和智能为核心的时代,掌握最新的技术趋势是每个企业和个人都需要做到的。这就是GPT Boss存在的意义:一个基于OpenAI技术的一站式GPT应用解决方案。 自2022年起,GPT Boss团队便投身于人工智能领域,将OpenAI的GPT模型带给…...
FastAPI使用ORJSONResponse作为默认的响应类型
FastAPI默认使用Python的标准库来做json解析,如果换成rust编写的orjson,速度上会快一些 1. 安装依赖 pip install orjson 2. 设置为默认响应类型 from fastapi.responses import ORJSONResponseapp FastAPI(titlexxx, default_response_classORJSON…...
C++初阶:适合新手的手撕string类(模拟实现string类)
上次讲了常用的接口:C初阶:初识STL、String类接口详细讲解(万字解析) 今天就来进行模拟实现啦 文章目录 1.基本结构与文件规划2.构造函数(constructor)2.1构造函数2.1.1无参有参分开2.1.2利用缺省参数合起来 2.2拷贝构…...
uniapp canvas游标卡尺效果
效果 根据公司业务仿照写的效果。原项目从微信小程序转uniapp,未测试该效果在android端效果。 uniapp直接使用canvas不可做子组件,否则无效果显示,其次显示时要考虑页面渲染超时的问题。 如效果所见,可以设置取值精度。 gitee地址:project_practice: 项目练习 - Gitee.…...
【django】建立python虚拟环境-20240205
1.确保已经安装pip3 install venv 2.新建虚拟环境 python -m venv myenv 3.安装虚拟环境的依赖包 pip install … 4.激活虚拟环境 cd myenv cd Scripts activate 激活activate.bat并进入虚拟环境 进入虚拟环境后,命令行前面显示(myenv࿰…...
070:vue+cesium: 利用canvas设置线性渐变色材质
第070个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中设置线性渐变色的材质,这里使用canvas的辅助方法。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共104行)专栏目标示例效果 配置方式 1)查看基础…...
Electron+Vue实现仿网易云音乐实战
前言 这个项目是我跟着官方文档的那个Electron入门教程大致跑了一遍,了解了下Electron开发流程之后的实战项目,所以中间应该是会有很多写法不是很规范,安全性有可能也没考虑到,可实现的各种api也不是很了解,适合初学者。 必须感谢 https://github.com/Binaryify/NeteaseC…...
【玩转408数据结构】线性表——定义和基本操作
考点剖析 线性表是算法题命题的重点,该类题目实现相对容易且代码量不高,但需要最优的性能(也就是其时间复杂度以及空间复杂度最优),这样才可以获得满分。所以在考研复习中,我们需要掌握线性表的基本操作&am…...
回归预测 | Matlab实现ABC-BP人工蜂群算法优化BP神经网络多变量回归预测
回归预测 | Matlab实现ABC-BP人工蜂群算法优化BP神经网络多变量回归预测 目录 回归预测 | Matlab实现ABC-BP人工蜂群算法优化BP神经网络多变量回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现ABC-BP人工蜂群算法优化BP神经网络多变量回归预测&#x…...
SQL笔记-2024/01/31
cross join 两个表的笛卡尔积 例如: select s.name student_name,s.age student_age,s.class_id class_id,c.name class_name from student s cross join class c; 子查询 select s.name name,s.score score,s.class_id class_id from student s where s.class_id …...
C#系列-简介(1)
一,C#简介 C#(读作“C Sharp”)是一种由微软公司开发的、运行于.NET Framework和.NET Core(现在统称为.NET)之上的高级编程语言。C#结合了C的强大功能和Java的易用性,旨在成为一种“优雅且安全”的语言&am…...
LoRA:语言模型微调的计算资源优化策略
编者按:随着数据量和计算能力的增加,大模型的参数量也在不断增加,同时进行大模型微调的成本也变得越来越高。全参数微调需要大量的计算资源和时间,且在进行切换下游任务时代价高昂。 本文作者介绍了一种新方法 LoRA,可…...