Vector容器的一点说明

基于Vector 的AUTOSAR NvM 模块使用 本文主要讲述Vector的两款工具configurator和Developer关于NvM的配置流程,包括如何新建NvM SWC以及添加和修改NvM block,Developer主要涉及NvM SWC的新建、添加新NvM Block以及修改原有的NvM Block;Configurator主要涉及三个模块NvM、Fee以及Fls,以下将分为两个模块对该部分进行介绍。 一、Developer 使用 1.1 新建NvM SWC并实例化 如下图,为Developer左列列表 图 1.1... 阅读详情

1. resize 与 reserve

先看一个简单的例子:

//使用resize
std::vector<int> vec1;
vec1.resize(10);
vec1.push_back(10);  // 第11个元素
vec1.push_back(10);  // 第12个元素
// 使用reserve
std::vector<int> vec2;
vec2.reserve(10);
vec2.push_back(10);  // 第1个元素
vec2.push_back(10);  // 第1个元素

通过查看vector的源代码,就可以很容易地看到:

>> resize(10)使用10个默认初值(此处为0)的对象(int类型)去填充10个区域,这可以通过vec1.size()获得的vec1的大小验证,如果要改变这10个元素的值,可用直接使用vec1[0] = 10....

>> reserve(10)仅仅是预分配 10个int类型的空间,而不改变vector的大小(vec1.size() = 0)

 

2. swap 与 clear

 从两个函数的名字就可以清楚地了解到:swap是用于交换两个容器的内容,clear是用于清空当前的容器。这里要说明的是,swap与clear都可以用以“清空”当前的容器(涉及到swap的巧妙用法)。不过两者对vector的底层影响并不一样。看看下面的代码: 

// 使用clear
std::vector<int> vec1;
for (int i = 0; i < 10; ++i) {
    vec1.push_back(10);
} // size = 10, capacity >= 10(13)
vec1.clear(); // size = 10, capacity不变
// 使用swap
std::vector<int> vec2;
for (int i = 0; i < 10; ++i) {
    vec2.push_back(10);
} // size = 10, capacity >= 10(13)
vec2.swap(std::vector<int>()); // size = 0, capacity = 0

可以看出:clear仅仅清空vecotr中的数据,而不改变vector的实际物理空间大小。swap能够彻底改变vector的物理空间(这点往往很重要)。

 

3. 对象元素的一些说明

在vector中插入对象(class)要注意对象的构造与析构所引起的额外消耗,如:函数调用的系统消耗,函数本身的消耗等。即使一个空的构造/析构函数,对于数量非常庞大的函数调用的开销还是不能不考虑的。

【Apollo学习笔记】——规划模块TASK之SPEED_HEURISTIC_OPTIMIZER 在Apollo星火计划学习笔记——Apollo路径规划算法原理与实践与【Apollo学习笔记】——Planning模块讲到……Stage::Process的函数会依次调用task_list中的TASK,本文将会继续以LaneFollow为例依次介绍其中的TASK部分究竟做了哪些工作。由于个人能力所限,文章可能有纰漏的地方,还请批评斧正。在配置文件中,我们可以看到LaneFollow所需要执行的所有task。本文将继续介绍LaneFollow的第10个TASK——动态规划规划目标加速度尽可能小。 阅读详情

相关推荐

想发故障诊断论文?手把手教你用CWRU数据集复现第一个Baseline模型

本文提供了一份基于CWRU轴承数据集的故障诊断Baseline模型实战指南,手把手教你从数据准备到模型构建的全流程。通过详细的Python代码示例和学术级实验设计,帮助初学者快速复现第一个故障诊断模型,为发表高质量论文奠定基础。

weixin_28681255的博客 428

[AutoSar]BSW_Memory_Stack_007 FEE 模块介绍

[AutoSar]BSW_Memory_Stack_007 FEE 模块介绍

汽车-嵌入式-工作笔记-autosar 3616

RK3568+XS9922B+Android11双模视频输入:CVBS与AHD兼容驱动开发实战

本文详细介绍了基于RK3568平台和XS9922B解码芯片,在Android11系统上开发支持CVBS与AHD双模视频输入的兼容驱动实战。内容涵盖硬件选型、内核驱动框架分析、双模信号自动识别与配置、视频通道切换实现及图像质量优化等关键技术点,为车载监控等需要兼容新旧摄像头的项目提供完整解决方案。

js777的博客 379

【CP AUTOSAR】Fee(FlashEEPROMEmulation)分析和使用

本文介绍CP AUTOSAR 架构下的Fee组件,基于S32K312芯片、NXP提供的RTD包,使用EB Tresos工具进行配置的经验。Fee组件实现FLASH的模拟EEPROM功能,即更合理的分配FLASH的资源,通过软件算法更大限度的利用FLASH延长使用寿命。Fee组件位于Memory Hardware Abstraction层里,为上层MemIf提供接口,下层是Fls组件。

a571338923的博客 2612

USB3.0一致性测试方案

为各测试项目具体测试结果包括脉冲串突发时间、脉冲串重复时间、时钟周期以及眼图等完整USB3.0测试项目,工程师可以看到各项测试的具体结果方便观察。RIGOL 提供了一套完善的工具,包括数字示波器、专业的测试夹具以及全自动一致性测试软件,使得USB 3.0设备设计人员能够高效精确地进行信号捕捉、测试与分析。报告第二部分测试摘要,在此可以看到USB3.0测试所有测试项目,并且可以观看到测试是否正常,可以帮助工程师更好的判断测试结果。,以简化下载、存储以及对于多媒体的大量内容的共享。

2409_87378937的博客 2530

hi3519dv500 os04a10输入调试

因该sensor接在soc端的iic6,在驱动中(Hi3519DV500_SDK_V2.0.1.1\smp\a55_linux\source\mpp\cbb\isp\user\sensor\hi3519dv500\omnivision_os04a10\os04a10_sensor_ctl.c)注意总线的选择。mem_process_isolation=1 改为 mem_process_isolation=0。2、OT_MIPI_SET_HS_MODE配置为LANE_DIVIDE_MODE_1。

linus 3167

QVector<T>::push_back 介绍

则允许你直接传递构造函数的参数列表,以便在容器中直接构造对象。方法本身的调用方式总是相同的:你传递一个值或可以隐式转换为。但是,可以通过不同的方式构造或获取这个值,这可能会让你觉得。方法只有一种基本的使用方式,即直接传递一个类型为。请注意,尽管有多种方式可以获取或构造值并将其传递给。以下是一些示例,展示了如何使用。的值或可以隐式转换为。

公孙莫言的博客 688

GPU硬件架构与微架构深度解析09-GPU寄存器文件深度解析

本文探讨GPU架构中大规模寄存器堆的设计与高效分配算法。寄存器文件作为GPU关键组件,支持大规模线程并行和快速数据存取。文章分析了多体寄存器堆的设计考量,包括端口数量、冲突避免和功耗管理,并比较了线性扫描、图着色等寄存器分配算法的特点。还介绍了寄存器压缩、动态分区等高级优化技术,以及NVIDIA Ampere架构的实际案例。这些技术对提升GPU计算性能和能效至关重要。

2301_79143213的博客 120

QList、QVector、QMap容器类

QList&lt;QString&gt; list;创建一个列表对象,存储一列QString类型的值 list&lt;&lt;str&lt;&lt;str1&lt;&lt;str2通过操作符 "&lt;&lt;" 将字符串存储在该列表中 函数QList::append(const T&amp;value)在列表末尾插入值 QList&lt;QString&gt; list; list.

qq_33200959的博客 4946

C++软件调试与异常排查从入门到精通专栏介绍与文章汇总

根据近几年排查软件异常的实践与经验,系统地讲解了C++软件异常常见原因与常用排查方法,以图文并茂的方式给出具体的分析实例,带领大家逐步掌握C++软件异常排查的相关技术与要领。

dvlinker的技术专栏 23万+

笔试题-2023-芯动-数字IC设计【纯净题目版】

笔试题-2023-芯动-数字IC设计【纯净题目版】

w0shishabi的博客 6396

vector容器 常用函数

C++ vector容器,常用函数介绍

xiaojinger_123的博客 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C++中vector使用详细说明

C++中vector使用详细说明 转自:http://blog.chinaunix.net/uid-26000296-id-3785610.html    http://www.cnblogs.com/mr-wid/archive/2013/01/22/2871105.html    https://www.cnblogs.com/aminxu/p/4686332.html 一、向量的介绍   ...

weixin_42430671的博客 2万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C嘎嘎探索篇:认识vector容器

前言:上篇文章小编讲述了string类的模拟实现,小编在刚开始写string类的时候说过,string并不算一个STL容器,只不过它和容器很类似用起来,下面小编将要讲述严格意义上来说我们学的STL的第一个容器:vector容器;下面废话不多说,开始走进vector容器的世界。正文:vector实际上和小编之前写过的顺序表是很类似的,我们可以把vector看成一个顺序表,不过vector可以接纳不同类型的变量,就比如vector可以分为储存int类型数据的vector、储存double类型数据的vector,

effort123_的博客 5275

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

C++容器篇,vector容器

C++的容器之一vector,介绍了其所有接口,包括增删改查和容量相关的成员哈桑农户,以及其底层实现。

CHAKMING1的博客 3846

STL—vector容器

vector相关知识

hffh123的博客 2114

Vector容器主要函数说明

C++ STL标准模板库 vector容器 vector容器相当于单端数组,但与普通数组的区别为: 普通数组是静态空间,vector容器是可扩展的。拓展时不是在原空间后继续开拓空间,而是重新找一块更大的空间,将数据拷贝到新空间中,并释放原空间。 容器示意图: 特点: 1.前端封闭,只能在后端插入push_back() 和弹出pop_back(), front()指向第一个数据,back()指最后一个数据; 2.可以利用迭代器对容器中内容进行遍历,其中v.begin()指向第一个元素,v.end()指向最后

weixin_47544487的博客 907

vector容器与iterator迭代器

vector容器 vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。和string对象一样,标准库负责管理存储元素的相关内存。我们把vector称为容器,是因为它可以包含其他对象。一个容器中的所有对象都必须是同一种类型的。 使用vector之前,必须包含相应的头文件。 #include using std::vector; vector是一个类模板(class

sead+ 4万+

C++容器 vector

介绍 vector 容器是STL中最常用的容器之一,它和 array 容器非常类似,都可以看做是对C++普通数组的“升级版”。不同之处在于,array 实现的是静态数组(容量固定的数组),而 vector 实现的是一个动态数组,即可以进行元素的插入和删除,在此过程中,vector 会动态调整所占用的内存空间,整个过程无需人工干预。 vector 常被称为向量容器,因为该容器擅长在尾部插入或删除元素,在常量时间内就可以完成,时间复杂度为O(1)。而对于在容器头部或者中部...

Sakuya__的博客 3592

C++STL容器详解——vector

插入6时正常是因为插入5个元素时,容量扩为了6,所以再插入一个元素就不会有问题,当再次插入时,有7个元素,而容量只有6就会出问题,所以迭代器当对元素处理完需要的时候在定义,定义完后就不要对元素在进行空间上的处理,容易失效。当我们知道删除的元素在哪个位置时,可以通过迭代器删除,而不知道时,就需要find来查找,但是vector中没有find的接口,这时候就需要用到算法中的find。这是因为删除了it后迭代器就失效了,因为it的位置不对,想要正常实现就需要保存删除元素的下一个迭代器。

未知陨落的博客 1582

STL之vector容器的介绍与模拟实现

vector的文档介绍vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。就时间而言,这是。

qq_74276498的博客 1246

vector容器insert函数的说明

对于vector中的insert函数,总结几种常用用法,并且对其返回值进行验证,还有一个小的陷阱(迭代器失效问题) 首先看在vector中,函数的声明如下: 接下来用代码进行验证: int arr[] = {3,4,5}; vector<int> v(arr, arr+3); //构造出初始的vector vector<int>::iterator ite = v.begin(); //迭代器指向vector的开始位置 ite = ...

笔记 1万+

C++ vector容器的swap方法(容器互换)

原文链接:https://blog.youkuaiyun.com/qq_41929943/article/details/103190891 swap方法可以交换两容器的内容。 int main() { vector<int> v1; v1.push_back(10); v1.push_back(20); vector<int> v2; v2.push_back(30); //printVector是自己编写用于遍历输出vector容器的函数 printVector(v1);

Demon_LMMan的博客 6103

STL 上头系列——vector 容器详解

带你一命通关 vector 容器 十分钟手撕 STL 底层原理

qq_61500888的博客 4475

C++ stl容器之vector用法

vector容器用法

hutaotaotao的博客 1275

vector容器的学习

construct(构造函数声明)接口说明vector()(重点)无参数构造被vector(size_type n, const vaule_type& val = value_type())构造并初始化n个val(重点)拷贝构造使用迭代器进行初始化构造// 下面涉及迭代器初始化的部分,我们学习完迭代器再来看这部分it!

2302_79964175的博客 1509
上一篇: 深入讲解函数中分配内存问题
下一篇: MDI格式文件的打开与转换(pdf)
henrik_he
博客等级 码龄16年 36粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值