《C++ Primer Plus》03vector,array,数组的区别

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

vector:

长度是可变的,效率比array和数组低。

array,数组:

长度不可变,效率更高。

vector,array:

可选择程序是安全的还是不安全的

数组:

数组本身是不安全的。


示例代码:

#include <vector>
#include <array>
int main()
{
	using namespace std;

	double a1[4]{2.1,2.5,3.6,7.0};
	vector<double> a2(4);
	a2[0] = 1.0 / 3.0;
	a2[1] = 1.0 / 5.0;
	a2[2] = 1.0 / 7.0;
	a2[3] = 1.0 / 9.0;
	array<double, 4> a3 = {3.14,2.72,1.62,1.41};
	array<double, 4> a4;
	a4 = a3;//<array能直接将一个对象的值赋值给另一个对象
	cout << "a1[2]=" << a1[2] << " ,at: " << &a1[2] << endl;
	cout << "a2[2]=" << a2[2] << " ,at: " << &a2[2] << endl;
	cout << "a3[2]=" << a3[2] << " ,at: " << &a3[2] << endl;
	cout << "a4[2]=" << a4[2] << " ,at: " << &a4[2] << endl;
	//(a1-2) = 20,找到a1指定的地方,向前移动两个double元素,
	//这样是不安全的,其位置也是不缺定的,可能引起意想不到的
	//错误,着说明数组的行为是不安全的。
	//vector,array可以避免这种错误,也可以不避免,这主要看你怎么用
	//用方括号[]取值,这是不能避免上述不安全行为的,用at取值,可以避免
	//at将在运行期间捕获非法索引,而程序默认中断,这种额外检查的代价是
	//运行时间更长
	a1[-2] = 20.2;
	cout << "a1[-2]= " << a1[-2] << " ,at: " << &a1[-2] << endl;
	cout << "a3[2]=" << a3[2] << " ,at: " << &a3[2] << endl;
	cout << "a3[2]=" << a4[2] << " ,at: " << &a4[2] << endl;
	system("pause");
	return 0;
}


文章系统阐述了CANopen与CANopen FD在机器人关节通信中的应用,比较了二者在数据负载、传输速率、PDO/SDO机制等方面的差异,分析了CiA 301与CiA 1301协议的演进关系 内容概要:本文系统梳理了CANopen与CANopen FD在机器人关节通讯中的应用,重点从协议原理、帧结构、对象字典、PDO/SDO机制等方面对比分析两种协议的技术差异与适用场景。CANopen基于CAN 2.0,具有成熟稳定、成本低的优势,适用于传统工业机器人的实时控制;而CANopen FD基于CAN FD,在数据载荷(最大64字节)、传输速率(最高8 Mbit/s)等方面显著提升,更适合多关节协同、批量参数整定和固件升级等高性能需求场景。文章还探讨了CiA 301与CiA 1301的兼容性问题,指出当前“CiA 301 over CAN FD”仍为主流,但CiA 1301代表长期演进方向。最后给出了波特率匹配、节点ID规划、PDO映射优化等工程实践建议。; 适合人群:从事工业机器人、协作机器人控制系统开发的工程师,具备一定CAN总线和嵌入式开发基础的研发人员; 使用场景及目标:①理解CANopen与CANopen FD在机器人关节控制中的选型依据;②掌握PDO/SDO、对象字典、同步机制等核心技术的设计与优化方法;③为多关节机器人通讯架构设计提供技术参考; 阅读建议:此资源结合实际应用场景深入剖析协议细节,建议读者结合机器人控制项目实践,重点关注PDO映射、同步设计与USDO批量配置等关键环节,并注意区分“CAN FD物理层 + CiA 301”与完整CiA 1301协议栈的差异。 立即下载

相关推荐

MATLAB实现的两级OPF与电动车充电调度,用于配电网络.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

C++ Primer Plus 学习笔记 第四章 指针、数组和指针算数

double wages[3] = {10000.0, 20000.0, 30000.0}; short stacks[3] = {3, 2, 1}; double* pw = wages; short* ps = &stacks[0]; pw指向wages的第一个元素的内存地址 &wages指的是整个内存的地址。 所以 sizeof 返回的是整个数组...

@凌晨三点半的博客 302

Delphi 13.2控件之WizFile.7z

Delphi 13.2控件之WizFile.7z

C++初探 4-4(复合类型 - 类型组合与数组的替代)

类型组合 数组的替代品 模板类vector 模板类arrayC++11) 比较数组vector对象和array对象

w_pab的博客 533

C++ Primer Plus 学习笔记 第四章 03

声明:本文整理自《C++ Primer Plus》 100天之第04天 01 使用new创建动态结构 inflatable * ps = new inflatable; 把存储inflatable结构的一块可用内存地址赋给ps。 如果结构标识符时结构名,则使用句点运算符;如果标识符是指向结构的指针,则使用箭头运算符。 ps->price 02 自动存储、静态存

wangtiankuo的博客 429

C++函数模板深度解析:从隐式实例化到显式具体化的实战指南

泛型编程是提升代码复用性和维护性的核心技术,其核心思想在于编写独立于数据类型的算法逻辑。函数模板作为实现泛型编程的关键机制,通过在编译期生成特定类型的代码,确保了类型安全且无损运行时性能。理解模板的实例化过程——尤其是隐式实例化与显式实例化的区别——对于控制编译行为和优化大型项目至关重要。当通用模板无法满足特定类型的需求时,显式具体化技术允许开发者为其定制特殊实现,这在与C风格字符串等特殊类型交互时尤为实用。本文结合工程实践,深入探讨了模板的匹配规则、分离编译的挑战以及利用SFINAE、constexpr等

weixin_30703911的博客 337

侯捷-C++面向对象高级开发-下

个人学习笔记

weixin_56148345的博客 344

Python 寄存器位域解析与 JSON 配置工具(芯片开发+寄存器/位域+解析源码+寄存器转储分析)

根据 JSON 指定位宽和字段起止位,解析寄存器数值并显示枚举含义。包含重叠字段、重复名称、位范围和输入数值检查。 适用于嵌入式软件开发人员、驱动开发入门者及相关技术学习者。资源包含源码或模板、使用说明及验证范围说明。Python 3.10+,仅使用标准库;寄存器宽度 1 至 64 位。 功能边界见 README.md,实际验证情况见 TESTING.md。

UAC白名单设置-软件使用

代码下载链接: https://pan.quark.cn/s/a4b39357ea24 用户账户控制(UAC)白名单的配置 Windows7环境中 UAC(User Account Control,用户帐户控制)是由微软在Windows Vista版本中推出的一项旨在增强系统安全性的创新技术,该技术强制要求用户在执行可能干扰计算机正常运作的操作或进行更改会波及其他用户设置的变动前,必须提供相应的权限或管理员密码进行验证。通过对这些操作启动前进行授权确认,UAC能够有效阻止恶意软件及间谍软件在未获授权的状态下于计算机内进行安装或实施修改。 自从Vista版本问世以来,微软便开始推行这一全新的安全机制,可视为对系统安全防护的显著提升。尽管UAC确实能够在一定程度上对某些非法程序起到防御作用,但与此同时,这一功能也给众多用户带来了诸多不便。 因此,许多用户开始探寻是否存在类似于白名单的功能,以便将那些值得信赖的程序直接赋予运行权限。事实上,这类功能确实存在,不过微软并未将其作为标准配置提供。 网络上关于此问题的绝大多数建议都是建议禁用UAC,这种说法显然缺乏针对性,因为若用户希望禁用此功能,本就不会提出相关疑问。 通过运用微软官方发布的Microsoft Application Compatibility Toolkit 5.6版本,可以将信任的程序纳入系统白名单范畴。 获取Application Compatibility Toolkit 安装程序成功后会出现三个可执行文件 以管理员身份启动Compatibility Administrator 在Custom DataBases部分创建新的数据库,并添加一个Application Fix(在下方空白处点击右键,选择...

DELL服务器操作系统安装

下载代码方式:https://pan.quark.cn/s/a4b39357ea24 DELL服务器的操作系统部署流程包含一系列细致的环节,其适用范围涵盖多种操作系统类型,例如Windows Server与Red Hat Linux等。在启动部署之前,必须确认服务器的光驱设备为DVD驱动器,并且需准备对应的系统安装媒介。下面将详细列出完整的部署步骤: 1. **启动准备**:将随服务器提供的Systems Management Tools and Documentation version 6.0光盘置入服务器光驱,随后设定服务器以光驱作为启动设备。此环节旨在确保服务器在启动阶段能够读取安装光盘内容。 2. **语言设定**:服务器启动后,选定简体中文作为部署语言,并确认接受许可协议条款。 3. **时区选择**:在部署期间,需设定时区为北京、香港、重庆或乌鲁木齐,依据实际地理位置进行适配选择。 4. **系统类型选择**:随后,需选定计划部署的操作系统,支持的版本包括Server 2003 SP2、Server 2003 SP2 64位版本、Windows 2003 SBS SP2、Server 2008、Windows 2008 SBS/EBS x64版本等,以及多种Red Hat和SUSE Linux版本。 5. **RAID设定**:若服务器出厂时已预设RAID配置,则可选择跳过此步骤。若需重新设定RAID,操作时需格外小心,因为这一过程可能引发硬盘数据遗失。 6. **引导分区规划**:设定引导分区的大小,通常C盘建议预留至少20GB的空间,具体容量需根据系统需求进行调整。 7. **网络设定**:网络设定可在系统部署完成后执行,部署期间建议暂时拔除...

老人自动接视频appp

老人自动接视频app的

HTML5 audio player

代码下载地址: https://pan.quark.cn/s/a4b39357ea24 这是一款模仿酷狗的基于HTML5技术的网络音乐播放器,能够兼容全部mp3格式的音乐文件,用户既可以在联网状态下,也能够在无网络环境下欣赏自己偏爱的歌手作品。对于具备开发兴趣的人员,可以获取其源代码,将其解压并载入MM开发平台实施调整与改进,支持制作成apk(适用于Android系统)和ipa(适用于iOS系统)的应用程序包,随后安装至移动设备使用;或者将该应用项目文件配置到MM应用引擎中,通过网页浏览器来预览实际运行状况。MM应用引擎的展示页面:http://html5player.mmapp.cn/client/www/app.html 有关更多应用范例的代码资料,可以访问MM开发环境官方网站进行获取:http://dev.10086.cn/ude/index.do

如何高效推动高校科技成果转化落地,解决产学研对接难的问题?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

厦门侠客行 厦门旅游景点 KML矢量数据

本资源为厦门侠客行主题旅游地图KML矢量数据。标注了厦门市主要旅游景点、历史文化遗迹与城市地标位置,涵盖鼓浪屿、南普陀寺、厦门大学、曾厝垵、环岛路、胡里山炮台等厦门经典景点,以及环岛骑行路线、步行游览路径等旅行轨迹数据,可在Google Earth中沉浸式规划厦门旅游路线,适用于厦门旅游攻略制定、城市历史文化研究、自由行路线规划等场景。

如何突破高校科研经费不足与产学研合作的瓶颈?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

高校科技成果转化难,如何高效对接企业需求并提升转化率?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

上一篇: 《C++ Primier Plus》02
下一篇: 数字转化为特定格式的字符串
最后的牛仔
博客等级 码龄12年 56粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值