std::vector容器

C++ vector的初始化、添加、遍历、插入、删除、查找、排序、释放操作 C++的vector本质上是一个动态数组,数据量不大的情况下,非常方便存储和访问操作,当然,不好的情况是数据量大的情况下,查找效率低,删除操作还会导致大量的数组移动操作。 虽然这样,vector还是一个很有用的东西,可以满足很多开发需求。 1.vector的初始化 Vector是向量模板,C++ STL之一。前面说过vector是一个动态生长的数组,一开始vector为空时,会给一 阅读详情

 std::vector是封装动态数组的顺序容器,支持下标随机访问,c++开发中使用非常频繁。
其存储是自动管理的,按需扩张和收缩,一般扩展为原先的1.5-2倍。 
vector通常占用多于静态数组的空间,因为需要分配更多内存以管理将来可能的增长。

代码:

下面演示std::vector的增、删、改、查

#include <iostream>
#include <vector>

using namespace std;

typedef vector<int> MyVector;

void printf_myVector(const MyVector& vec) {
	auto vecIter = vec.begin();
	for (; vecIter != vec.end(); vecIter++) {
		cout << *vecIter << " ";
	}
	cout << "\n";
}

int main()
{
	MyVector myVector;

	//增
	int array[] = { 1,5,12 };
	for (auto &num : array) {
		myVector.push_back(num);
	}
	myVector.insert(myVector.end(), {7,8});
	printf_myVector(myVector);

	cout << "----------------我是分割线 删除5-------------" << endl;
	//删
	auto iter = myVector.begin();
	for (; iter != myVector.end(); iter++) {
		if (5 == *iter) {
			iter = myVector.erase(iter);
		}
	}
	printf_myVector(myVector);

	cout << "----------------我是分割线 修改索引0、1-------------" << endl;
	//改
	if (myVector.size() > 2) {
		myVector[0] = 55;
		myVector.at(1) = 66;
	}
	printf_myVector(myVector);

	cout << "----------------我是分割线 查找55-------------" << endl;
	//查
	bool flag = false;
	vector<int>::iterator iter1;
	iter1 = find(myVector.begin(), myVector.end(), 55);
	if (iter1 != myVector.end()) {
		flag = true;
	}
	cout << "flag = " << flag << endl;

	getchar();
	return 0;
}

输出:

深入理解 C++ 中 std::vector 和 std::set 容器的使用 std::vector 适用于需要频繁进行随机访问和在末尾快速插入删除元素的场景,而 std::set 则更擅长处理需要元素唯一性和有序性的情况,如数据去重和集合运算等。当向向量中添加元素时,如果当前元素个数等于容量,std::vector 会自动重新分配一块更大的内存空间,并将原有的元素复制到新的内存区域,然后再添加新元素。在上述代码中,首先使用 std::set 来标记 instpt 中的元素,然后遍历 ve3,将其中不重复的元素添加到结果向量,并同时标记这些元素。 阅读详情

相关推荐

三种容器 std::vector、std::map、std::unordered_set 的对比分析

选择合适的容器应根据具体需求,包括添加元素的频率、查找元素的方式和遍历容器的需求等。适用于需要频繁访问和添加元素的场景,std::map适用于需要有序存储和高效查找的场景,而则适用于需要快速查找且不关心元素顺序的场景。通过理解每种容器的特点和适用场景,可以编写更高效、更易维护的代码。

winrich的博客 1453

typedef用法总结

使用typedef为现有类型创建别名,定义易于记忆的类型名1typedef int size;12345678910void measure(size*psz);  size array[4];  size len=file.getlength();  std::vector&lt;size&gt;vs;typedef 还可以掩饰复合类型,如指针和数组。例如,你不用像下面这样重复定义有 81 个字...

weixin_40285369的博客 249

C++的数据类型----标准库类型(std::vector容器/std::list容器/std::map容器)的实例讲解

C++中标准库类型的实例讲解

weixin_41065810的博客 1602

STL vector详解

<br />::std::vector<> 在头文件 <vector> 中定义:<br />(注意,标准的 C++ 头文件都没有 .h 后缀,有 .h 的文件是与 C 兼容的,或支持老的不标准的东西,象 <iostream.h>。)<br />namespace std <br />{<br />    template<typename T, typename A = allocator<T> ><br />    struct vector<br />    {<br />        // 具体内容

等待飞翔的候鸟 775

VS2010和Matlab混合编程

使用VS2010和Matlab混合编程,在VS中实现矩阵操作

UE5 StateTree实战:用分层状态机重构你的AI行为逻辑(附蓝图配置避坑点)

本文详细介绍了UE5中StateTree分层状态机的实战应用,帮助开发者重构AI行为逻辑。通过核心概念解析、迁移策略、高级技巧和避坑指南,展示了StateTree在灵活性、可维护性和并行处理方面的优势,特别适合复杂AI行为的开发与优化。

weixin_42558257的博客 247

std::vector用法

vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。 为了可以使用vector,必须在你的头文件中包含下面的代码: #include vector属于std命名域的,因此需要通过命名限

codemanrock 2万+

告别迷茫!用C#和Windows.Devices.Bluetooth搞定BLE设备连接与数据收发(附完整代码)

本文详细介绍了如何使用C#和Windows.Devices.Bluetooth命名空间实现BLE设备连接与数据收发。从开发环境配置到设备扫描、服务发现、数据通信及资源管理,提供完整代码示例和实战技巧,帮助开发者快速掌握低功耗蓝牙开发,解决连接稳定性和异常处理等常见问题。

weixin_29248653的博客 505

typedef std::vector<Byte> ByteVector

简单来说,就是从这一行开始,可以用ByteVector这个名字代替std::vector 比如:   typedef std::vector ByteVector;             ByteVector a;  //这句语句和std::vector a等同; 这种方

Anna39的专栏 5202

Audio2Face进阶玩法:结合LiveLink在UE5中实现MetaHuman全身动画+语音驱动(保姆级配置指南)

本文提供了一份详尽的保姆级教程,指导如何将NVIDIA Audio2Face与Unreal Engine 5的LiveLink功能结合,实现驱动MetaHuman数字人面部表情的同时,无缝融合身体动画。文章详细讲解了从环境准备、插件部署、基础面部驱动测试,到动画蓝图高级配置与多数据流融合的全流程,并分享了性能优化与问题排查的实战经验,旨在帮助创作者打造表情与肢体动作协调统一的生动数字人。

q9w8e7r6t5的博客 196

PlayReady Encrypt XAP 解密讨论

目前WP7市场上的绝大部分XAP都被MS进行了加密,经过分析,这个加密方式采用了AES方式进行了加密,本人经过对新的XAP格式(PRE)进行了分析,发现新的格式里,实际上是对之前PK(ZIP格式)的XAP进行了加密然后封装:   typedef struct {   DWORD HDR; // 0x07455250 : PRE & 0x7   DWORD a1; // always 0x1   D

u013729125的专栏 1507

C++中std::vector容器的入门讲解

本文介绍了 std::vector 的用法。 std::vector 是 C++ 标准库中的一个容器,用于存储一组具有相同类型的元素。 std::vector ​​​​​​​具有动态分配内存、随机访问、尾部添加和删除元素等特性,是C++中常用的数据结构之一。

qq_50635297的博客 3322

企业AI Agent的审计与合规

本文将带你从**“0基础理解企业AI Agent审计与合规”到核心概念梳理:用大白话+学术定义拆解什么是“企业AI Agent”、“可审计性(Auditability)”、“可解释性(Explainability,XAI)≠可审计性”、“合规性(Compliance)”、“黑盒拆解的三层维度”等硬核但必须掌握的概念;风险与合规背景:从**内部风险(数据泄露、误操作、模型偏差)和。

Java大师兄的博客 301

容器库——std::vector

容器库——std::vector详解

qq_44778120的博客 1万+

【实战】Python 携程酒店价格实时抓取爬虫项目全解析

摘要:本文介绍了一个基于Python的携程酒店价格实时抓取系统开发方案。系统采用Requests、BeautifulSoup和Selenium等技术栈,实现了多城市、多日期的酒店数据采集,包括价格、评分、位置等关键信息。通过请求头伪装、IP代理、随机等待等反爬策略,有效应对携程的反爬机制。系统支持数据清洗、去重和CSV/Excel导出,并提供了多线程优化、代理池集成等进阶方案。本文详细阐述了技术原理、代码实现和优化策略,同时强调了数据采集的合法合规性,为旅游行业数据分析提供了可靠的数据获取方案。

2503_91057718的博客 2605

【WRF-Chem工具】anthro_emiss 详解:生成人为排放数据

anthro_emiss 详解:生成人为排放数据

WW、forever的博客 2054

c++ std容器 std::map,std::vector,std::list,std::set初始化

在C++中,std::map是一个关联容器,它存储的元素是键值对(key-value pairs),其中每个键在容器中都是唯一的。你可以使用多种方法来初始化std::map<std::string, double>。以下是一些示例:默认初始化:创建一个空的std::map。使用初始化列表:在声明的同时使用初始化列表来填充std::map。使用insert成员函数:创建一个空的std::map然后使用insert成员函数来添加元素。

m0_47136986的博客 1954

基于深度学习的交通标志识别系统:使用YOLOv10、UI界面及自定义数据集的实现

实时检测和分类交通标志。提供一个友好的用户界面,方便用户上传图片或视频进行检测。收集和显示检测结果,以便进行进一步分析。YOLO(You Only Look Once)是一种高效的目标检测算法,它能够在一次前向传播中同时进行目标定位和分类。YOLOv10是YOLO系列的最新版本,具有更好的检测精度和速度。本项目成功实现了基于YOLOv10的交通标志检测与识别系统。通过实时检测与分类,系统能够有效识别出各种交通标志,为智能交通应用提供支持。

YOLO 1234

可变长结构体放入std::vector容器中的错误

可变长结构体放入std::vector等容器会产生错误,如下: #include <iostream> #include <vector> using namespace std; struct node { int size; //list的大小 int list[0]; }; int main() { std::vector&lt...

onlytheworld的博客 1355

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

「C/C++」C++ STL容器库 之 std::vector动态数组容器

是 C++ STL 中一个非常强大和灵活的容器,适用于需要动态数组的场景。通过本文,我们详细了解了的构造函数、对象初始化、元素访问、迭代器、容器操作、修改器以及元素比较等各个方面。希望这些信息能够帮助你更好地理解和使用。

何曾参静谧的博客 1454

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

从std::vector到std::listC++容器选择的性能权衡与实战分析

一个经典的性能对比是:对于存储int类型的小对象,即使是在中间位置插入,当n小于一定阈值(如1000)时,vector可能仍然比list快,因为list的动态分配和缓存不友好成本超过了vector移动元素的成本。此外,C++11引入了std::forward_list(单向链表),它比list更节省内存(每个节点少一个指针),但只能单向遍历,在只需要单向操作的场景下是更好的选择。:list的插入删除操作不会使其他元素的迭代器失效(除了被删除的元素),而vector的修改可能导致所有迭代器失效。

qw940423的博客 906

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

C++ 第四阶段 STL 容器 - 第一讲:详解 std::vector

std::vector是C++ STL中最常用的动态数组容器,具有连续存储、自动扩容和高效随机访问等特性。本文详解其核心功能:1)多种构造方式;2)元素访问方法;3)容量管理操作;4)插入删除操作。重点分析性能优化策略,包括预分配内存、使用emplace_back提升插入效率。同时指出常见陷阱如迭代器失效问题,并提供典型应用场景示例,如动态数组模拟、STL算法实现和二维数组构建。通过合理使用vector既能获得数组的随机访问优势,又能享受动态扩容的便利。

弘羽 3552

深入解析C++标准库中的std::vector容器

底层是一个动态数组,内存由动态分配的连续内存块管理。缺点内存必须连续,可能导致大容量时内存分配失败。中间插入/删除操作开销较大。优点支持随机访问。动态增长,摊销插入时间复杂度为 O(1)。使用场景适合频繁访问和遍历,以及主要在末尾进行插入/删除操作的场景。

m0_72877724的博客 1839

std容器vector、map、Qt容器QList、QMap使用

std标准库中的容器std::vector和std::map以及Qt中容器QList和QMap使用

hong_yu0315的博客 1777

C++ --- std::array容器与std::vector容器的区别

在C++中,array和vector都是用于存储一系列相同类型元素的容器,但它们之间存在几个关键的区别。这些区别主要体现在内存管理、大小固定性、性能以及功能特性等方面。

2303_79004636的博客 1321

Sol2容器支持详解:std::vector、map等标准容器的无缝集成

Sol2作为一款高性能的C++与Lua API封装库,其强大的容器支持功能让开发者能够轻松实现C++标准容器与Lua表之间的无缝交互。通过Sol2,你可以直接将std::vector、std::map等容器暴露给Lua脚本,享受原生级别的性能表现。😊 ## 🔥 为什么选择Sol2容器支持? Sol2的容器支持不仅仅是简单的数据传递,而是提供了**完整的双向交互能力**。C++容器在Lua中

gitblog_01064的博客 665
上一篇: 基于原生c++代码实现的Http下载程序
下一篇: std::map容器
Qt上位机开发
Qt上位机开发 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄9年 9664粉丝 178原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值