彻底搞清vector的使用机制

1.重要的是要认识size() 是vector当前能合理访问的元素数,capacity()是vector实际内存占用的大小.

  • 删除操作clear 或者erase只是改变了size,而实际的内存占用还是原来的最大占用。如果用index去访问还是可能访问到的。
  • clear():的作用实际上是通过将size()设置为0,而内存不变,当下次push的时候会去把对应位置的内存进行覆盖。
  • erase():改变size()减1,内存左移,大小不变
  • resize(n)改变的是size大小为n,如果n<capacity()的大小,内存不变,若n>capacity()会将内存扩充到n,并将新增的内存赋予默认值。
  • reserve(n)改变的是capacity大小,而size不变。

例子:
初始vec: size为5;capacity为5;内存为 {1,2,3,4,5}
clear之后: size为0;capacity为5;内存为 {1,2,3,4,5} 此时访问vec[2]、vec[4]等都能访问到
push_back(6):size为1;capacity为5;内存为 {6,2,3,4,5} vec[0]的内存值被覆盖。
push_back(7) size为2;capacity为5;内存为 {6,7,3,4,5} vec[1]的内存值被覆盖。

初始vec: size为5;capacity为5;内存为 {1,2,3,4,5}
erase掉第一个值:size为4;capacity为5;内存为{2,3,4,5,5}
erase掉第一个值:size为3;capacity为5;内存为{3,4,5,5,5}
erase掉第一个值:size为2;capacity为5;内存为{4,5,5,5,5}

那么我们想在用的时候彻底清空内存要怎样操作呢,比如vector<int> test可以进行如下操作清空内存

vector<int>().swap(test)
要实现MICROSAR Classic平台上信号处理到服务映射的高效率,同时保证通信安全,可以遵循以下步骤和方法: 参考资源链接:[2023 Vector China嵌入式软件技术日:MICROSAR Classic新车功能概览](https://wenku.csdn.net/doc/83t0mry2k3) 1. **信号处理与服务映射** - 首先,确保软件架构设计中包含高效的信号处理机制,例如使用快速信号通道(Fast Signal Channel, FSC)和信号缓冲管理机制,以减少信号处理的延迟和提高性能。 2. **安全岛设计** - 在安全岛内部署专门的处理单元,负责安全相关的信号服务映射。安全岛通过内建的硬件和软件防护措施,实现对数据的加密、签名和完整性校验。 3. **通信安全** - 利用MACsec(介质访问控制安全性)功能,为通信提供端到端的安全保障。在MICROSAR Classic中,MACsec可用于保护网络中的所有数据包,防止数据被窃取或篡改。 4. **使用Vector工具链** - 利用Vector提供的工具,如CANoe和CANalyzer进行网络监控和诊断,以确保在开发阶段就可以检测通信问题并加以解决。 5. **遵循AUTOSAR标准** - 确保遵循AUTOSAR Classic的规范和标准来设计和实现信号服务映射。这包括利用AUTOSAR提供的标准化接口和模板,简化设计流程。 6. **虚拟化技术** - 应用veHypervisor和相关虚拟化技术,可以进一步隔离关键任务和安全岛,提高系统的安全性和稳定性。 7. **实时操作系统** - 确保信号处理和服务映射在实时操作系统(RTOS)中运行,满足实时性和确定性的要求。 8. **文档和测试** - 在实施过程中,使用详尽的文档记录设计决策和实施步骤,并进行彻底的测试,以验证信号处理和服务映射的正确性和安全性。 这些步骤能够帮助开发者在MICROSAR Classic平台上实现高效且安全的信号处理和服务映射。《2023 Vector China嵌入式软件技术日:MICROSAR Classic新车功能概览》是针对这一主题的宝贵资源,提供了深入的技术讲解和最佳实践案例,帮助开发者掌握最新的技术和解决方案。 参考资源链接:[2023 Vector China嵌入式软件技术日:MICROSAR Classic新车功能概览](https://wenku.csdn.net/doc/83t0mry2k3)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值