C++中vector简介

C++ vector介绍 用于构造一个数组,根据使用的构造函数版本初始化其内容。重载1:空容器构造函数(默认构造函数)。构造一个没有元素的空容器(空数组)。重载2:构造一个包含n个元素的容器。每个元素都是val。重载3:范围构造函数。构造一个包含与范围 [第一个,最后一个)一样多的元素的容器,每个元素都以相同的顺序从该范围中的相应元素构造而成。重载4:拷贝构造函数。以相同的顺序构造一个包含x中每个元素的副本的容器。(1)简要概括功能该函数作用是调整容器的大小,使其包含n个元素,并对所有位置初始化。 阅读详情

一、vector

1. vector(向量):C++中的一种数据结构,确切的说是一个类模板。它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的。例如:vector<int>和vector<string>都是数据类型。

2. 声明一个Int向量以替代一维数组:vector<int> a;(等于声明了一个int数组a[],大小没有指定,可以动态的向里面添加删除)

3. 内存管理与效率

3.1 使用reserve()函数提前设定容量大小,避免多次容量扩充操作导致效率低下。

关于STL容器,最令人称赞的特性之一就是只要不超过它们的最大大小,它们就可以自动增长到足以容纳你放进去的数据,vector在重新分配时一般把容量翻倍。当进行insert或push_back等增加元素的操作时,如果此时动态数组的内存不够用,就要动态的重新分配当前的大小的1.5~2倍的新内存区,再把原数组的内容复制进去。所以,在一般情况下,其访问速度同一般数组,只有在重新分配发生时,其性能才会下降。对于vector容器来说,如果有大量的数据需要进行push_back,应当使用reserve()函数提前设定其容量大小,否则会出现许多次容量扩充操作,导致效率低下。

3.2 STL(standard template library,标准模板库)容器

参考:http://blog.youkuaiyun.com/hackbuteer1/article/details/6791260

C++标准库中的顺序容器及相应的容器适配器,这些内容主要涉及顺序容器类型:vector、list、deque,顺序容器适配器类型:stack、queue、priority_queue。

备注:

1.C++中有些函数可以声明为内联(inline)函数,编译器遇到内联函数时就会直接扩展相应代码,而不是进行实际的函数调用。像size()这样的小库函数几乎都定义为内联函数,所以每次循环过程中调用它的运行时代价是比较小的。

2.C++程序员习惯于优先选用!=而不是<来编写循环判断条件。

3.“缓冲区溢出”错误就是对不存在的元素进行下标操作的结果。

4.vector的下标操作不添加元素,只读取或改变已存在元素。

二、iterator迭代器

1.每种容器类型都定义了自己的迭代器类型。iterator类型如:vector <int>

2.begin和end操作,用于返回迭代器。begin指向iter[0];而end指向vector的末端的下一个而非末端。通常称为“超出末端迭代器”。

3.const_iterator迭代器,该类型只用于读取容器内元素的值,但不能改变其值。

备注:

1. *为解引用操作。

2. const_iterator与const iterator区别。

例:

#include <iostream>
#include <vector>
#include <iterator>
#define max_size 100
using namespace std;

void main()
{
	vector <int> text;
	text.reserve(max_size);
	for(int i=0;i!=10;i++){
		text.push_back(i);
	}
	vector <int>::iterator iter;
	for(iter = text.begin();iter!=text.end();++iter){
		cout<<*iter<<endl;//使用*iter来访问迭代器所指向的元素
	}

	const vector<int> nines(10,9);//cannot change elements in nines
	const vector<int>::iterator cit2 = nines.begin();//error:cit2 could change the element it refers to and nines is const
	vector<int>::const_iterator it = nines.begin();//ok,it can't change an element value,so it can be used with a const vector<int>
	*it = 10;//error:*it is const
	++it;//ok,it is't const so we can change its value
}


FMT(基于rtthread)开源代码编译 win10下编译环境搭建及编译 FMT(基于rtthread)开源代码编译 win10下编译环境搭建及编译 什么是Firmament? Firmament (FMT) 是一款基于模型设计 (Model-Based-Design, MBD) 的开源自驾仪,可被用来快速构建无人机,无人车,无人船,机器人等平台的控制系统。 系统主要由两部分构成. FMT-Firmware: 一个基于C/C++开发的稳定、高性能的嵌入式系统. FMT-Model: 一个基于MATLAB/Simulink开发的仿真框架以及算法库. 昨天得知FMT开源飞控项目已经开 阅读详情

相关推荐

实战MSP-M0G3507与陶晶驰串口屏的通信协议解析

本文详细解析了MSP-M0G3507微控制器与陶晶驰串口屏的通信协议实现。内容涵盖串口配置、协议帧结构、数据校验机制及ASCII协议实战代码,重点介绍了陶晶驰串口屏的指令集应用和调试技巧,为嵌入式开发提供可靠的串口通信解决方案。

h9j8k7l6m5n的博客 867

C++的vector介绍

一点睛 1基本概念 向量 vector 是一种对象实体, 能够容纳许多其他类型相同的元素, 因此又被称为容器。 与string相同, vector 同属于STL(Standard Template Library, 标准模板库)中的一种自定义的数据类型, 可以广义上认为是数组的增强版。 在使用它时, 需要包含头文件 vector #include<vector> ve...

实践求真知 1577

SoIC、CoWoS、InFO一次讲透:从2D/2.5D/3D看懂先进封装

先进封装是后摩尔时代提升芯片性能的关键路径,但面对SoIC、CoWoS、InFO这些名词,很多人容易混淆。理解它们,需从最基本的2D、2.5D、3D封装概念入手:2D是传统平房,2.5D通过硅中介层实现高密度互连,3D则让芯片直接堆叠。CoWoS作为2.5D中介层封装,已成为AI芯片与HBM高带宽存储集成的行业标准;SoIC通过铜-铜混合键合实现真正的3D堆叠,为逻辑与缓存提供极致带宽;InFO以扇出型封装兼顾成本与集成度,广泛用于移动SoC。在系统级封装(SiP)和CPO共封装光学等前沿趋势中,这些技术往

weixin_42388898的博客 310

C++:vector的介绍

C++的vector是一种可变长度的,被广泛用于C++编程中。它是标准模板库(STL)中的容器之一,提供了比原始数组更灵活和方便的操作。vector可以存储任意类型的元素,包括基本类型(如整数和浮点数)和自定义类型(如类和结构体)。它的大小可以根据需要动态调整,而不需要手动管理内存。vector支持随机访问,即可以通过下标直接访问容器中的元素。它还提供了一系列的成员函数和操作符,如插入、删除和查找等,使得对元素的操作变得更加方便和高效。vector。

m0_61088872的博客 980

3GPP LTE/NR信道模型

CDL(Clustered Delay Line):簇延迟线模型,包括CDL-A、CDL-B、CDL-C三个用于NLOS的信道模型,以及CDL-D、CDL-E两个用于LOS的信道模型。

LinkEverything的博客 1万+

mysql笔记:23. 在Mac上安装与卸载MySQL

MySQL对Mac电脑的适配十分强大,再加上Mac本身就是Unix操作系统演化而来的,所以在Mac上安装MySQL的方式有多种。常见的方法有如下三种:DMG、brew、TAR。介绍这些方法前,我们先了解下MySQL安装文件的下载。

斌斌(Java) 2248

C++初阶-vector的介绍及使用

string底层是一个字符数组,模拟实现string类,最主要是实现string类的构造、拷贝构造、赋值运算符重载以及析构函数。(constructor)构造函数声明接口说明vector() (重点)无参构造构造并初始化n个val(重点)拷贝构造使用迭代器进行初始化构造。

sushang的博客 1496

samba源码编译安装(版本4.13.0)

这里写目录标题前言编译安装samba下载三个包安装依赖共需要安装samba、gnutls、nettle1、进入解压后的samba目录执行:2、进入解压后的gnutls目录执行3、进入解压后的nettle目录执行3.1 卸载已存在nettle3.2 编译3.3 make3.4 安装4、进入gnutls继续编译4.1 编译4.2 make4.3 安装5、再次进入解压后的samba目录5.1 执行./configure5.2 make5.3 samba安装启动samba 前言 一般来说,安装samba最快的方式应

灵葱的博客 1万+

【C++航海王:追寻罗杰的编程之路】vector

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

枫叶丹4的博客 2016

绕过限制?实测修改UA在PC端运行微信小程序的可行性及风险

本文探讨了通过修改User-Agent(UA)在PC端运行微信小程序的技术可行性及风险。分析了小程序设备限制的技术原理,包括`wx.getSystemInfo`API和UA检测机制,并提供了多种修改方案及其局限性。同时强调了潜在的安全和法律风险,推荐使用官方模拟器或安卓模拟器等更安全的替代方案。

weixin_30879169的博客 362

拼多多笔试真题-多多送快递(C++/Py/Java /Js/Go)

拼多多技术岗笔试 8月2号真题,拼多多笔试第三题【多多送快递】,提供详细思路讲解以及Java、C++、Python、Go、JavaScript多语言代码实现。拼多多笔试真题【多多送快递】多语言题解。

qq_45776114的博客 291

C++标准库类型vector及迭代器iterator简介

Vector是C++标准库类型,称为容器,一个容器中的所有对象必须是同一种类型的。与数组相比,其最大的优点就是动态增长。Vector是一个类模板,并不是数据类型,而vector和vector才是数据类型。其下标的类型为vector::size_type类型。 1:vector对象的定义和初始化        vector v        vector v(v1)   v1 是v的一个副本

小村长技术blog 2372

在 TASKPROCESSING 上为 ABAP OData 服务添加多个系统别名:从原理到落地的完整实践

本文面向SAP Gateway与ABAP开发者,详细讲解如何在TASKPROCESSING OData服务上添加系统别名。首先介绍了系统别名的概念与设计初衷,阐述了添加别名的业务场景需求,包括多系统接入、用户分流和灰度发布等。随后提供了标准配置步骤,从SPRO路径到具体操作说明,并分享了三个实际案例说明如何实现跨区域统一待办、按用户角色分流和灰度发布。最后给出了验证方法和常见问题解决方案,帮助开发者掌握这项基础但关键的配置技能,实现服务路由的可控管理。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 137

C++ vector简介

简介vector是C++中的一个容器,它是一个能够存放任意类型的动态数组,能够增加和压缩数据。基本操作首先包含头文件:#include <vector> 定义vector对象:vector<int> vec 尾部插入一个对象:vec.push_back(elem) 删除尾部的一个对象:vec.pop_back()

Linux_先生的博客 692

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C++——vector的简介及使用

文章目录vector简介vector的使用vector的定义vector迭代器的使用begin和endrbegin和rendvector 空间增长size和capacityemptyreserve和resizevector 增删查改push_back和pop_backinsert和erasefindswapoperator[ ]vector迭代器失效问题底层空间改变导致迭代器失效指定位置元素的删除操作 vector简介 vector文档 vector是表示可变大小数组的序列容器 和数组一样,vector也

qq_56663697的博客 1252

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

C++ 容器Vector简介

C++ Vector简介: 1.      标准库中的顺序容器(使用头文件#include): a) 可变大小数组 b) 支持快速随机访问,在尾部之外的位置插入删除元素操作较慢(保存在连续的内存空间中) Tip:除非你有很好的理由选择其他容器,否则应该使用vector(from 《C++ Primer》) 2. 定义和初始化 vector v1; //默认构造

上善若水 973

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

C++ vector动态数组的简介

vector是 C++ 标准库中的动态数组容器,它定义在<vector>头文件中,属于std命名空间。vector本质是对传统静态数组的 “升级”,与传统静态数组不同,普通数组在声明时需要指定大小,一旦确定,其大小在程序运行期间就无法改变。而vector通过自动内存管理(按需扩容)和随机访问特性,平衡了数组的高效访问与动态数据量的需求。其设计理念是 “让使用者无需关心内存细节”,将底层内存分配、复制、释放等操作封装,聚焦于业务逻辑。

weixin_72113769的博客 531

C++中vector类型的简介

标准库Vector类型 使用需要的头文件: #include Vector:Vector 是一个类模板。不是一种数据类型。 Vector是一种数据类型。 一、 定义和初始化 Vector v1; //默认构造函数v1为空 Vector v2(v1);//v2是v1的一个副本 Vector v3(n,i);//v3包含n个值为i的元素 Vector v4(n); //v4含有n个值为0的元素 二、 值初始化 1> 如果没有指定元素初始化式,标准库自行提供一个初始化值进行值初始

程序猿的博客 703

C++ vector 相关函数简介

vector函数简介 size() 容器中元素个数 max_size() 最大可以存储的元素个数 capacity() 实际存储空间的大小,大于或等于size() empty() 容器是否为空,size()==0为true reserve() 重新分配空间的大小 resize() 重新分配容器的元素个数 front() 第一个元素的值 back() 最后一个元素的值 at() 某个位置的元素值,并检查位置是否越界 begin() 正序第一个元素的位置 end() 正序最后一个元素的下一个位置 rbegin

汉阳Hann's Home 2798

C++中Vector和array简介

文章目录模板类Vector 模板类Vector

Home_Wood的博客 708

C++——vector简介

C++ STL中的vector是一种动态数组容器,支持随机访问和自动扩容。常用操作包括:push_back添加元素、pop_back删除尾部元素、size获取大小等。示例展示了用vector解决查找最大值位置的问题,通过push_back输入数据并遍历比较。相比静态数组,vector更灵活高效,特别适合编程竞赛使用。其动态特性和丰富功能使其成为处理序列数据的理想选择。

chensimiao0717的博客 283

C++ STL中vector操作简介

C++ STL中vector操作简介1、定义2、常用操作二级目录三级目录 1、定义 功能 例子 说明 定义int型数组 vector < int > a ; 默认初始化,a为空 vector < int > b(a) ; 用a定义b vector < int > a(100) ; a有100个值为0的元素 vector < int > a(100,6) ; 100个值为6的元素 定义string型数组 vector &lt

GTC的博客 420

C++基础:C++中vector使用简介

vector是C++标准库中的一个类,与数组颇为相似,不同之处在于,vector可以自动扩展容量,故可以将其视为会自动扩展容量的数组。vector是C++标准程序库中的众多容器(container)之一,能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型数据的动态数组。 为了可以使用vector,需要在你的头文件中包含下面的代码: #include using

杂的文 3711

c++STL-STL简介和vector的使用

STL简介,vector的使用,迭代器失效问题,一些OJ。

m0_73693552的博客 792

c++: vector 简介

向量 vector 是一种对象实体, 能够容纳许多其他类型相同的元素, 因此又被称为容器。 与string相同, vector 同属于STL(Standard Template Library, 标准模板库)中的一种自定义的数据类型, 可以广义上认为是数组的增强版。在使用它时, 需要包含头文件 vector, #include<vector>vector 容器与数组相比其优点在于它能够根据需要随时自

New coder, Step further 343

C++之vector简介

vector简介     vector是STL中最常见的容器,它是一种顺序容器,支持随机访问。vector是一块连续分配的内存,从数据安排的角度来讲,和数组极其相似,不同的地方就是:数组是静态分配空间,一旦分配了空间的大小,就不可再改变了;而vector是动态分配空间,随着元素的不断插入,它会按照自身的一套机制不断扩充自身的容量。     vector的扩充机制:按照容器现在容量的一倍

陌上人如玉,公子世无双。 668
上一篇: 时间复杂度的计算
下一篇: Java中类及方法的加载顺序
hellorichen
博客等级 码龄13年 199粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值