c ++零基础可视化——数组
c ++零基础可视化
数组
一些知识:
-
关于给数组赋值,一个函数为
memset
,其在cplusplus.com中的描述如下:void * memset ( void * ptr, int value, size_t num );
Sets the first num bytes of the block of memory pointed by ptr to the specified value (interpreted as an
unsigned char
).
将 ptr 指向的内存块的前字节数设置为指定值(解释为 anunsigned char
)。parameter参数
-
ptr
Pointer to the block of memory to fill. 指向要填充的内存块的指针。
-
value
Value to be set. The value is passed as an
int
, but the function fills the block of memory using the unsigned char conversion of this value. 要设置的值。该值作为 anint
传递,但该函数使用此值的 unsigned char 转换填充内存块。 -
num 编号
Number of bytes to be set to the value. 要设置为该值的字节数。 size_t is an unsigned integral type. size_t 是无符号整型。
-
-
关于给数组赋值,一个函数为
fill
,其在cplusplus.com中它的描述如下:
template <class ForwardIterator, class T> void fill (ForwardIterator first, ForwardIterator last, const T& val);
Assigns val to all the elements in the range [first,last)
.
将 val 分配给范围 [first,last)
中的所有元素。
Parameters 参数
-
first, last 第一个、最后一个
Forward iterators to the initial and final positions in a sequence of elements that support being assigned a value of type T. The range filled is
[first,last)
, which contains all the elements between first and last, including the element pointed by first but not the element pointed by last. 将迭代器转发到支持为 type T 分配值的元素序列中的初始和最终位置。填充的范围是[first,last),
它包含 first 和 last 之间的所有元素,包括 first 指向的元素,但不包括 last 指向的元素。 -
val
Value to assign to the elements in the filled range. 要分配给填充区域中元素的值。
例子:
// fill algorithm example #include <iostream> // std::cout #include <algorithm> // std::fill #include <vector> // std::vectorint main () {std::vector<int> myvector (8); // myvector: 0 0 0 0 0 0 0 0std::fill (myvector.begin(),myvector.begin()+4,5); // myvector: 5 5 5 5 0 0 0 0std::fill (myvector.begin()+3,myvector.end()-2,8); // myvector: 5 5 5 8 8 8 0 0std::cout << "myvector contains:";for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)std::cout << ' ' << *it;std::cout << '\n';return 0; }
题目一https://www.luogu.com.cn/problem/B2020
#include <bits/stdc++.h>using namespace std;using LL = long long;#define endl "\n"int main() {ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);vector<int> nums(5);for(auto &u : nums) {cin >> u;}int sum = 0;for(int i = 0; i < 5; i ++) {sum += nums[i] % 3;nums[i] -= nums[i] % 3;nums[(i + 4) % 5] += nums[i] / 3;nums[(i + 1) % 5] += nums[i] / 3;nums[i] /= 3;}for(auto &u : nums) {cout << u << " ";}cout << endl;cout << sum << endl;return 0;
}
此处五个人围成一个圈,可以用取模运算。
关于对加法的理解,一个人的编号加上2就是前进两个人。例如编号为0的人加上2得到编号为2的人。总共有五个人, 所以加上五即为0+5=5,即又回到了自己的位置。若编号特别大则对5取模又可以将编号控制在0到4。
关于对减法的理解,一个人的编号减去1就是相当于加上了n-1个人。最后加上取模操作可将编号控制在0到4。
题目二https://www.luogu.com.cn/problem/B2064
#include <bits/stdc++.h>using namespace std;using LL = long long;#define endl "\n"int main() {ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);int _;cin >> _;int nums[31] = {0};nums[1] = 1;nums[2] = 1;for(int i = 3; i <= 30; i ++) {nums[i] = nums[i - 1] + nums[i - 2];}while(_ --) {int x;cin >> x;cout << nums[x] << endl;}return 0;
}
对数组的理解:递推求解并存储答案。从微小的状态开始求取整个过程并用数组进行存储。每次计算出nums[i],即nums[i] = 计算的公式。
题目三:https://www.luogu.com.cn/problem/B2079
#include <bits/stdc++.h>using namespace std;using LL = long long;#define endl "\n"int main() {ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);int n;cin >> n;double fact[16] = {1};double e = 1;for(int i = 1; i <= n; i ++) {fact[i] = i * fact[i - 1];e += 1 / fact[i];}cout << fixed << setprecision(10) << e << endl;return 0;
}
对数组的理解:和上面的方法相同,采用递推的方法求解阶乘并将其存储在数组中。
关于以下代码,是我学到的新方法:
#include <bits/stdc++.h>using namespace std;using LL = long long;#define endl "\n"int main() {ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);int n;cin >> n;double invfact[16] = {1}, e = 1;for(int i = 1; i < 16; i ++) {invfact[i] = invfact[i - 1] / i;}e += accumulate(invfact + 1, invfact + n + 1, 0.0);cout << fixed << setprecision(10) << e << endl;return 0;
}
其中的accumulate函数极其精妙。
cplusplus.com中的描述:
template <class InputIterator, class T> T accumulate (InputIterator first, InputIterator last, T init);
template <class InputIterator, class T, class BinaryOperation> T accumulate (InputIterator first, InputIterator last, T init, BinaryOperation binary_op);
Returns the result of accumulating all the values in the range [first,last)
to init.
返回将 [first,last]
范围内的所有值累加到 init
The default operation is to add the elements up, but a different operation can be specified as binary_op.
默认操作是将元素相加,但可以将不同的操作指定为 binary_op
first, last 第一个、最后一个
Input iterators to the initial and final positions in a sequence. The range used is [first,last)
, which contains all the elements between first and last, including the element pointed by first but not the element pointed by last.
将迭代器输入到序列中的初始和最终位置。使用的范围是 [first,last),
它包含 first 和 last 之间的所有元素,包括 first 指向的元素,但不包括 last 指向的元素。
init 初始化
Initial value for the accumulator.
累加器的初始值。
binary_op
Binary operation taking an element of type T as first argument and an element in the range as second, and which returns a value that can be assigned to type T.
将 type T 的元素作为第一个参数,将 range 中的元素作为第二个参数的二进制运算,并返回一个可分配给 type T 的值。
This can either be a function pointer or a function object.
这可以是函数指针或函数对象。
The operation shall not modify the elements passed as its arguments.
该操作不得修改作为其参数传递的元素。
相关文章:

c ++零基础可视化——数组
c 零基础可视化 数组 一些知识: 关于给数组赋值,一个函数为memset,其在cplusplus.com中的描述如下: void * memset ( void * ptr, int value, size_t num );Sets the first num bytes of the block of memory pointed by ptr to…...

CVE-2024-2961漏洞的简单学习
简单介绍 PHP利用glibc iconv()中的一个缓冲区溢出漏洞,实现将文件读取提升为任意命令执行漏洞 在php读取文件的时候可以使用 php://filter伪协议利用 iconv 函数, 从而可以利用该漏洞进行 RCE 漏洞的利用场景 PHP的所有标准文件读取操作都受到了影响࿱…...

计算机组成原理笔记----基础篇
计算机系统硬件软件 软件 ├── 系统软件 │ ├── 操作系统 │ └── 工具软件 └── 应用软件├── 办公软件├── 媒体软件└── 浏览器软件硬件 ├── 计算机硬件 │ ├── 中央处理器(CPU) │ ├── 存储设备 │ │ ├── …...

TheadLocal出现的内存泄漏具体泄漏的是什么?弱引用在里面有什么作用?什么情景什么问题?
首先ThreadLocal是什么就不介绍了!这篇是讲讲里面的东西。 再简单说一下强引用和弱引用,举个例子,我们平常new出来的对象就是强引用的,在栈中有强引用,所以在gc的时候,堆中的实例对象不会被清除掉。 弱引…...

AI在电商平台中的创新应用:提升销售效率与用户体验的数字化转型
1. 引言 AI技术在电商平台的应用已不仅仅停留在基础的数据分析和自动化推荐上。随着人工智能的迅速发展,越来越多的电商平台开始将AI技术深度融合到用户体验、定价策略、供应链优化、客户服务等核心业务中,从而显著提升运营效率和用户满意度。在这篇文章…...

CTF-RE 从0到N:RC4
RC4加密算法简介 RC4是由Ron Rivest于1987年设计的一种流加密算法。它通过伪随机数生成器生成密钥流,并将该密钥流与明文进行异或运算来完成加密和解密。 RC4的加密流程 RC4主要包含两个阶段: 密钥调度算法 (Key Scheduling Algorithm, KSA)ÿ…...

HbuilderX 插件开发-模板创建
实现思路 使用HbuilderX 打开某个文档时右键点击的时候获取当前打开的文档内容使用 API 替换为自己的模板 示例 package.json {"id": "SL-HbuilderX-Tool","name": "SL-HbuilderX-Tool","description": "快速创建h…...

打造专业问答社区:Windows部署Apache Answer结合cpolar实现公网访问
文章目录 前言1. 本地安装Docker2. 本地部署Apache Answer2.1 设置语言选择简体中文2.2 配置数据库2.3 创建配置文件2.4 填写基本信息 3. 如何使用Apache Answer3.1 后台管理3.2 提问与回答3.3 查看主页回答情况 4. 公网远程访问本地 Apache Answer4.1 内网穿透工具安装4.2 创建…...

YOLO-SLD: An Attention Mechanism-ImprovedYOLO for License Plate Detection
摘要 车辆牌照检测在智能交通系统中发挥着关键作用。检测汽车、卡车和面包车等的牌照对于执法、监控和收费站操作非常有用。如何快速准确地检测牌照对牌照识别至关重要。然而,在现实世界复杂捕捉场景中,光照条件不均匀或牌照拍摄角度的倾斜会发生剧烈变…...

ArcGIS的汉字(亚洲文本)垂直标注
01 需求说明 实现ArcGIS的汉字(亚洲文本的垂直标注)。 启用 Maplex 标注引擎。 在标注 工具条上单击标注管理器按钮 。 选中要进行标注的图层旁边的复选框。 选择图层下方的标注分类。 单击符号。 选中 CJK 字符方向复选框。 仅当字体有垂直的文本度…...

【面试题】
1.UART 和 IIC 的区别 UART (Universal Asynchronous Receiver-Transmitter) 用途:用于异步串行通信。信号线:通常需要两根线(TX 和 RX),有时还需一根地线。通信方式:点对点。数据传输:单向或…...

Leetcode 寻找峰值
为了实现时间复杂度为 O ( log n ) O(\log n) O(logn),可以使用二分查找法: 解题思路: 峰值的特性是:当前元素大于左右相邻元素。使用二分法: 如果 nums[mid] > nums[mid 1],说明峰值在左侧或当前…...

探索大规模语言模型(LLM)在心理健康护理领域中的应用与潜力
概述 心理健康是公共卫生最重要的领域之一。根据美国国家精神卫生研究所(NIMH)的数据,到 2021 年,22.8% 的美国成年人将患上某种形式的精神疾病。在全球范围内,精神疾病占非致命性疾病负担的 30%,并被世界…...

Infisical开源密钥管理平台实战指南
1. 引言 在现代软件开发中,安全地管理环境变量和敏感信息已成为一个关键挑战。Infisical作为一个开源的密钥管理平台,为这一问题提供了强大而灵活的解决方案。本指南将深入探讨Infisical的功能,并通过实际操作步骤,帮助读者全面了解和使用这个工具。 2. Infisical概述 I…...

AI大模型:重塑软件开发流程与模式
人工智能技术的飞速发展,尤其是AI大模型的兴起,正以前所未有的速度和深度影响着各行各业,其中软件开发领域尤为显著。AI大模型,如GPT系列、BERT、Claude等通过其强大的自然语言处理能力、代码理解和生成能力,正在从根本…...

AMD(Xilinx) FPGA配置Flash大小选择
目录 1 FPGA配置Flash大小的决定因素2 为什么选择的Flash容量大小为最小保证能够完成整个FPGA的配置呢? 1 FPGA配置Flash大小的决定因素 在进行FPGA硬件设计时,选择合适的配置Flash是我们进行硬件设计必须考虑的,那么配置Flash大小的选择由什…...

基于Java Springboot图书借阅系统
一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…...

DDRPHY数字IC后端设计实现系列专题之数字后端floorplanpowerplan设计
3.2.3 特殊单元的布局 布图阶段除了布置 I/O 单元和宏单元,在 28nm 制程工艺时,还需要处理两种特 殊的物理单元,Endcap 和 Tapcell。 DDRPHY数字IC后端设计实现系列专题之后端设计导入,IO Ring设计 (1)拐…...

【Mysql】Mysql函数(上)
1、概述 在Mysql中,为了提高代码重用性和隐藏实现细节,Mysql提供了很多函数。函数可以理解为封装好的模块代码。 2、分类 在Mysql中,函数非常多,主要可以分为以下几类: (1)聚合函数 …...

Java连接MySQL(测试build path功能)
Java连接MySQL(测试build path功能) 实验说明下载MySQL的驱动jar包连接测试的Java代码 实验说明 要测试该情况,需要先安装好MySQL的环境,其实也可以通过测试最后提示的输出来判断build path是否成功,因为如果不成功会直…...

卡尔曼滤波器
卡尔曼滤波器概述 卡尔曼滤波器(Kalman Filter)是一种递归的最优估计方法,广泛应用于信号处理、控制理论、导航定位等领域。它基于线性动态系统模型,通过观测数据不断更新系统的状态估计,从而使得估计值能够在噪声干扰…...

基于BERT的情感分析
基于BERT的情感分析 1. 项目背景 情感分析(Sentiment Analysis)是自然语言处理的重要应用之一,用于判断文本的情感倾向,如正面、负面或中性。随着深度学习的发展,预训练语言模型如BERT在各种自然语言处理任务中取得了…...

推荐15个2024最新精选wordpress模板
以下是推荐的15个2024年最新精选WordPress模板,轻量级且SEO优化良好,适合需要高性能网站的用户。中文wordpress模板适合搭建企业官网使用。英文wordpress模板,适合B2C网站搭建,功能强大且兼容性好,是许多专业外贸网站的…...

AWTK-WIDGET-WEB-VIEW 实现笔记 (2) - Windows
在 Windows 平台上的实现,相对比较顺利,将一个窗口嵌入到另外一个窗口是比较容易的事情。 1. 创建窗口 这里有点需要注意: 父窗口的大小变化时,子窗口也要跟着变化,否则 webview 显示不出来。创建时窗口的大小先设置…...

Linux四剑客及正则表达式
正则表达式 基础正则(使用四剑客命令时无需加任何参数即可使用) ^ # 匹配以某一内容开头 如:^grep匹配所有以grep开头的行。 $ # 匹配以某一内容结尾 如:grep$ 匹配所有以grep结尾的行。 ^$ # 匹配空行。 . # 匹配…...

ALS 推荐算法案例演示(python)
数学知识补充:矩阵 总结来说: Am*k X Bk*n Cm*n ----至于乘法的规则,是数学问题, 知道可以乘即可,不需要我们自己计算 反过来 Cm*n Am*k X Bk*n ----至于矩阵如何拆分/如何分解,是数学问题,知道可以拆/可以分解即可 ALS 推荐算法案例:电影推…...

labview中连接sql server数据库查询语句
当使用数据库查询功能时,我们需要用到数据库的查询语句,这里已调用sql server为例,我们需要按照时间来查询,这里在正常调用数据库查询语句时,我们需要在前面给他加一个限制条件这里用到了,数据库的查询语句…...

leetcode_二叉树最大深度
对二叉树的理解 对递归调用的理解 对内存分配的理解 基础数据结构(C版本) - 飞书云文档 每次函数的调用 都会进行一次新的栈内存分配 所以lmax和rmax的值不会混在一起 /*** Definition for a binary tree node.* struct TreeNode {* int val;* …...

Elasticsearch 重建索引 数据迁移
Elasticsearch 重建索引 数据迁移 处理流程创建临时索引数据迁移重建索引写在最后 大家都知道,es的索引创建完成之后就不可以再修改了,包括你想更改字段属性或者是分词方式等。那么随着业务数据量的发展,可能会出现需要修改索引,或…...

2411rust,异步函数
原文 Rust异步工作组很高兴地宣布,在实现在特征中使用异步 fn的目标方面取得了重大进度.将在下周发布稳定的Rust1.75版,会包括特征中支持impl Trait注解和async fn. 稳定化 自从RFC#1522在Rust1.26中稳定下来以来,Rust就允许用户按函数的返回类型(一般叫"RPIT")编…...