C++ STL Vector 函数介绍

c++中的vector动态数组 vector可以简单理解为STL(标准模版库)提供的功能强大的动态数组,vector不只是用来储存整型、浮点型等数字,还可以储存字符、字符串、结构体甚至是类等等。vector可以存储一系列类型相同的元素,因此,称vector为动态系列容器更加合适。提示:以下是本篇文章正文内容,下面案例可供参考以上就是vector容器的介绍以及一些简单的使用方法了,如要更深入了解vector类,可以参考《C_Primer_Plus_第六版》 阅读详情
 

C++ STL Vector 函数介绍

C++ Vectors

原文地址: http://www.cnblogs.com/dudupig123/archive/2010/08/04/1792352.html

构造函数

语法:

vector(); vector( size_type num, const TYPE &val ); vector( const vector &from ); vector( input_iterator start, input_iterator end );

C++ Vectors可以使用以下任意一种参数方式构造:

  • 无参数 - 构造一个空的vector,
  • 数量(num)和值(val) - 构造一个初始放入num个值为val的元素的Vector
  • vector(from) - 构造一个与vector from 相同的vector
  • 迭代器(start)和迭代器(end) - 构造一个初始值为[start,end)区间元素的Vector(注:半开区间).

举例,下面这个实例构造了一个包含5个值为42的元素的Vector

vector<int> v1( 5, 42 );


运算符

语法:

v1 == v2 v1 != v2 v1 <= v2 v1 >= v2 v1 < v2 v1 > v2 v[]

C++ Vectors能够使用标准运算符: ==, !=, <=, >=, <, 和 >. 要访问vector中的某特定位置的元素可以使用 [] 操作符.

两个vectors被认为是相等的,如果:

  1. 它们具有相同的容量
  2. 所有相同位置的元素相等.

vectors之间大小的比较是按照词典规则.

相关内容: at().


assign函数

语法:

void assign( input_iterator start, input_iterator end ); void assign( size_type num, const TYPE &val );

assign() 函数要么将区间[start, end)的元素赋到当前vector,或者赋num个值为val的元素到vector中.这个函数将会清除掉为vector赋值以前的内容.


at函数

语法:

TYPE at( size_type loc );

at() 函数 返回当前Vector指定位置loc的元素的引用. at() 函数 比 [] 运算符更加安全, 因为它不会让你去访问到Vector内越界的元素. 例如, 考虑下面的代码:

vector<int> v( 5, 1 ); for( int i = 0; i < 10; i++ ) { cout << "Element " << i << " is " << v[i] << endl; }

这段代码访问了vector末尾以后的元素,这将可能导致很危险的结果.以下的代码将更加安全:

vector<int> v( 5, 1 ); for( int i = 0; i < 10; i++ ) { cout << "Element " << i << " is " << v.at(i) << endl; }

取代试图访问内存里非法值的作法,at() 函数能够辨别出访问是否越界并在越界的时候抛出一个异常.

相关内容: [] 操作符


back 函数

语法:

TYPE back();

back() 函数返回当前vector最末一个元素的引用.例如:

vector<int> v; for( int i = 0; i < 5; i++ ) { v.push_back(i); } cout << "The first element is " << v.front() << " and the last element is " << v.back() << endl;

这段代码产生如下结果:

The first element is 0 and the last element is 4

相关内容: front().


begin 函数

语法:

iterator begin();

begin()函数返回一个指向当前vector起始元素的迭代器.例如,下面这段使用了一个迭代器来显示出vector中的所有元素:

vector<int> v1( 5, 789 ); vector<int>::iterator it; for( it = v1.begin(); it != v1.end(); it++ ) cout << *it << endl;

相关内容: end().


capacity 函数

语法:

size_type capacity();

capacity() 函数 返回当前vector在重新进行内存分配以前所能容纳的元素数量.


clear 函数

语法:

void clear();

clear()函数删除当前vector中的所有元素.


empty 函数

语法:

bool empty();

如果当前vector没有容纳任何元素,则empty()函数返回true,否则返回false.例如,以下代码清空一个vector,并按照逆序显示所有的元素:

vector<int> v; for( int i = 0; i < 5; i++ ) { v.push_back(i); } while( !v.empty() ) { cout << v.back() << endl; v.pop_back(); }

相关内容: size()


end 函数

语法:

iterator end();

end() 函数返回一个指向当前vector末尾元素的下一位置的迭代器.注意,如果你要访问末尾元素,需要先将此迭代器自减1.

来源:(http://blog.sina.com.cn/s/blog_66ced15f0100hu9e.html) - C++ STL Vector_老虎_晓茗_新浪博客

相关内容: begin()


erase 函数

语法:

iterator erase( iterator loc ); iterator erase( iterator start, iterator end );
erase函数要么删作指定位置loc的元素,要么删除区间[start, end)的所有元素.返回值是指向删除的最后一个元素的下一位置的迭代器.例如:
// 创建一个vector,置入字母表的前十个字符 vector<char> alphaVector; for( int i=0; i < 10; i++ ) alphaVector.push_back( i + 65 ); int size = alphaVector.size(); vector<char>::iterator startIterator; vector<char>::iterator tempIterator; for( int i=0; i < size; i++ ) { tartIterator = alphaVector.begin(); alphaVector.erase( startIterator ); // Display the vector for( tempIterator = alphaVector.begin(); tempIterator != alphaVector.end(); tempIterator++ ) cout << *tempIterator; cout << endl; }

这段代码将会显示如下输出:

BCDEFGHIJ CDEFGHIJ DEFGHIJ EFGHIJ FGHIJ GHIJ HIJ IJ J

相关内容: pop_back().


front 函数

语法:

TYPE front();

front()函数返回当前vector起始元素的引用

相关内容: back().


get_allocator 函数

语法:

allocator_type get_allocator();

get_allocator() 函数返回当前vector的内存分配器.


insert 函数

语法:

iterator insert( iterator loc, const TYPE &val ); void insert( iterator loc, size_type num, const TYPE &val ); void insert( iterator loc, input_iterator start, input_iterator end );

insert() 函数有以下三种用法:

  • 在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器,
  • 在指定位置loc前插入num个值为val的元素
  • 在指定位置loc前插入区间[start, end)的所有元素 .

举例:

//创建一个vector,置入字母表的前十个字符 vector<char> alphaVector; for( int i=0; i < 10; i++ ) alphaVector.push_back( i + 65 ); //插入四个C到vector中 vector<char>::iterator theIterator = alphaVector.begin(); alphaVector.insert( theIterator, 4, 'C' ); //显示vector的内容 for( theIterator = alphaVector.begin(); theIterator != alphaVector.end(); theIterator++ ) cout << *theIterator;

这段代码将显示:

CCCCABCDEFGHIJ

max_size 函数

语法:

size_type max_size();

max_size() 函数返回当前vector所能容纳元素数量的最大值(译注:包括可重新分配内存).


pop_back

语法:

void pop_back();

pop_back()函数删除当前vector最末的一个元素,例如:

vector<char> alphaVector; for( int i=0; i < 10; i++ ) alphaVector.push_back( i + 65 ); int size = alphaVector.size(); vector<char>::iterator theIterator; for( int i=0; i < size; i++ ) { alphaVector.pop_back(); for( theIterator = alphaVector.begin(); theIterator != alphaVector.end(); theIterator++ ) cout << *theIterator; cout << endl; }

这段代码将显示以下输出:

ABCDEFGHI ABCDEFGH ABCDEFG ABCDEF ABCDE ABCD ABC AB A

相关内容: erase().


push_back 函数

语法:

void push_back( const TYPE &val );

push_back()添加值为val的元素到当前vector末尾


rbegin 函数

语法:

reverse_iterator rbegin();

rbegin函数返回指向当前vector末尾的逆迭代器.(译注:实际指向末尾的下一位置,而其内容为末尾元素的值,详见逆代器相关内容)


rend 函数

语法:

reverse_iterator rend();

rend()函数返回指向当前vector起始位置的逆迭代器.


reserve 函数

语法:

void reserve( size_type size );

reserve()函数为当前vector预留至少共容纳size个元素的空间.(译注:实际空间可能大于size)


resize 函数

语法:

void resize( size_type size, TYPE val );

resize() 函数改变当前vector的大小为size,且对新创建的元素赋值val


size 函数

语法:

size_type size();

size() 函数返回当前vector所容纳元素的数目

相关内容: empty()


swap 函数

语法:

void swap( vector &from );

swap()函数交换当前vector与vector from的元素

MC1496乘法器AM调制电路搭建全流程(附Multisim 14.0仿真文件) 本文提供了基于MC1496乘法器搭建AM调制电路的完整实战指南。针对仿真模型缺失的痛点,详细讲解了从晶体管级手动构建MC1496等效模型,到外围电路设计、调制度参数计算与调节,并在Multisim 14.0中进行仿真验证的全流程。通过深度剖析MC1496内部原理与AM信号调制机制,帮助读者获得从仿真到实践的可控设计与排错能力。 阅读详情

相关推荐

MRI图像切片(nii格式转2D)

代码参考:将一个MRI(nii格式)数据进行切片 想要批量抽取MRI数据的几个切片,借鉴了上述代码的Python版本,原始代码抽取了全部切片。本次实验主要是抽取sMRI的横断面(axial)方向的其中30张切片,数量根据自己需求可自行设置。 import scipy, numpy, shutil, os, nibabel import sys, getopt import imageio def niito2D(filepath): inputfiles = os.listdir(filep

chs_502的博客 7551

vector容器 常用函数

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

xiaojinger_123的博客 1万+

新手必看:TwinCAT死活扫不到倍福CX5020?别慌,先检查这3个地方(附静态IP配置)

本文详细介绍了TwinCAT软件无法扫描到倍福CX5020控制器的常见问题及解决方案。从网络连通性检查、系统环境配置到静态IP设置,提供了一套完整的排查流程和优化建议,帮助新手快速解决通信问题,确保设备稳定运行。

weixin_27219587的博客 364

C++ vector类成员函数介绍

vector模板是C++标准库中的一个容器类,被设计为动态数组,即它可以根据需要自动分配内存空间来存储元素。vector模板的本质是一个类模板,它使用了C++语言中的模板技术,使其能够适应不同的数据类型,提供了一种通用的容器类实现。具体而言,vector类使用连续的内存来存储元素,它提供了访问和操作元素的方法,如push_back()、pop_back()、at()、[]等,同时还提供了一些其他的方法,如size()、capacity()、empty()等,以帮助用户管理容器的大小和内存分配等问题。

fckbb的博客 9657

数据本体论如何指导数仓建模?

数据本体论指导数仓建模的核心在于构建业务语义与数据结构的桥梁。该方法从业务域中抽象标准化知识体系,包含核心概念、属性、关系和规则五大要素,并将其映射为分层数仓模型。通过"业务本体梳理→本体建模→模型映射→治理迭代"的流程,实现数仓从"结构存储"到"语义载体"的升级。相比传统建模,该方法能解决语义不一致、跨域融合难等问题,使数仓具备更好的可扩展性和业务对齐性。实践表明,以数据本体论为指导的数仓建模能显著提升数据资产的可理解性和复用价值。

石榴姐yyds 395

DSP2837X CLA开发实战教程

摘要: 本文详细解析TI C2000 DSP中CLA协处理器的开发流程,以TMS320F28377D的cla_divide案例为例,展示浮点除法验证的实现方法。从基础配置(消息RAM管理、任务触发)到高级调试(ePWM计时、断点设置),涵盖全流程开发要点。重点分析CLA编程约束(禁用标准库、数学优化)、多任务调度及常见问题解决方案(如死锁、数据同步)。提供FPGA协同加速、电机控制等扩展方向,并推荐官方例程与硬件平台(如创龙TL2837xF-EVM)。开发时需注意.cla文件语法支持及调试技巧,以充分发挥C

6760

C++ Vectors详解

C++ Vectors详解构造函数(constructors)constrctor_1.cppconstructor_2.cppassign函数其他函数 Vectors包含着一系列连续存储的元素,其行为和数组类似。访问Vector中的任意元素或从末尾添加元素都可以在常量时间复杂度内完成,而查找特定值的元素所处的位置或者是在Vector中插入元素则是线性时间复杂度。 当Vectors空间不足时,会重...

代码海贼团船长的博客 823

TC3XX - MCAL知识点(三十九):AURIX™ TC3xx 的EDSADC实现旋变解码功能(应用笔记记录)

本文总结了英飞凌应用笔记中关于EDSADC旋变解码系统的关键内容。系统通过调幅解调获取电机位置和速度信号,支持内外载波生成方案,其中内部载波方案更常用(需2个DSADC通道)。重点介绍了滤波器链配置建议(避免FIR1)、系统条件要求(如偶数积分周期)以及群延迟计算方法。特别分析了SDCAP功能对硬件延迟的补偿机制,指出温度等因素可能导致外部电路延迟变化,需通过计数器测量并通过软件调整积分器起始点来消除角度误差。文中还提供了不同硬件延迟情况下的信号处理示例。

梦想技术家 459

python vector_C++ vector使用方法

在 c++ 中,vector 是一个十分有用的容器。它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。C++ 中数组很坑,有没有类似 Python 中 list 的数据类型呢?类似的就是 vector!vector 是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。和 string 对象一样,标准库将负责管理与存储元...

weixin_39859954的博客 4124

YOLO11改进|YOLO11中引入注意力和卷积融合模块CAFMAttention

YOLO11改进|YOLO11中引入注意力和卷积融合模块CAFMAttention

A1983Z的博客 1221

亚马逊爬虫实战:中国商家信息(电话)爬取

import os), # 保存图片的路径# 搜索关键词"keywords":["毛巾","衣服"],"product_number": 1000000000000000, # 分页获取数量# 和url一一对应 个数要一样"remarks": ["备注1"],# 以下内容非专业人员请勿更改,请找开发人员更改. 对应的是amazon_product_url_setting文件中名称.},

youbingchen的博客 1524

C++ STL常用函数介绍之vector(含例题PAT A1047和详细注释)

vector(长度根据需要而自动改变的数组)* 优势 1 普通数组有时会超内存,这样使用vector会方便许多(如果习惯用 const int maxn 大多数题也都行) 优势 2 vector可以用来以邻接表的方式存储图,这对不喜欢使用指针来实现邻接表也无法使用邻接矩阵的读者很有优势. 优势3 有的时候输出数据不确定,为了最后一个输出数据后面无空格,可以先用vector记录所有要输出...

m0_46266264的博客 547

Qt实现思维导图功能5『纵向分布模式』

思维导图纵向分布模式:模式一

浮生流年的博客 1057

【C++】STL——vector的简单介绍、vector的定义、vector的构造函数声明、vector iterator的使用

STL、vector的含义、vector的使用、vector构造函数声明、vector iterator的使用、begin + end、rbegin + rend

Crocodile1006的博客 4749

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【C++】STL——vector的有关空间的函数介绍和使用、size和capacity函数、resize和reserve函数

SLT、vector的使用、vector空间增长问题、size(获取数据个数)capacity (获取容量大小)empty (判断是否为空)resize (改变vector的size)reserve (改变vector的capacity)

Crocodile1006的博客 3564

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C++:STL:vector类常用函数介绍(附加部分重要函数模拟实现)

其中我们需要重点掌握的是以下几个构造函数:其中的swap,push_back,resize以及reserve与string中的功能基本一样,我们后面在来介绍实现它们, 这里我们先不管它们如何实现。我们要重点说的是这里拷贝构造时遇到的深浅拷贝问题,这里先埋个伏笔。

xiuwoaiailixiya的博客 1279

IEM模型,地表粗糙度模拟

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

C++入门之stl六大组件--Vector库函数的介绍,以及模拟实现一些常用接口

本节主要阅读了vector的源码,以及vector的使用vector是表示可变大小数组的序列容器。就像数组,vector也采用连续空间来存储元素,即可以使用下标对vector元素访问,但是它的大小是可以动态改变的,并且它的大小会被容器自动处理本质上,vector使用动态分配数组来存储它的元素,当新元素插入,就需要重新分配大小增加存储空间。它的做法是,动态开辟一个新的数组,然后将元素移动进来。时间代价较高。事实上,每当一个新的元素加入到容器,并不会每次都重新分配空间。

jolly0514的博客 1287

ACM常用C++函数和stl总结

自己对ACM中常用和不常用的函数和stl的简单总结,常不常用有标注

hao_6_6的博客 9632

【算法学习】STL库中vector的基本用法

1.STL库中vector的基本操作函数 https://www.runoob.com/w3cnote/cpp-vector-container-analysis.html 2.各个操作函数的运用 https://blog.youkuaiyun.com/qq_32172673/article/details/85127176

Warddamn的博客 212

[C++ STL] vector 详解

vector是STL中的一个容器,实现了动态数组的功能。它可以存储任意类型的元素,并提供了一系列的操作函数,如插入、删除、访问等。动态大小:vector的大小可以根据需要进行动态调整,可以随时增加或减少元素的数量。连续存储:vector的元素在内存中是连续存储的,可以通过下标快速访问元素。头部插入删除效率较低:由于在头部插入或删除元素时需要进行大块内存的复制或移动,导致效率较低。随机访问效率高:由于元素的连续存储,可以通过下标直接访问任意位置的元素。

石墨博客 1688

STL中vector的构造函数

        vector是由STL提供的一种序列式容器,它的底层其实就是一个动态数组。如要使用vector,需要#include&lt;vector&gt;。vector的特点:        因为支持下标访问,所以能高效的进行随机存取,时间复杂度为O(1);        由于内存空间是连续的,在进行非尾插和尾删的操作时,会进行大量的数据搬移操作,时间复杂度为O(n)。        当数组...

半暖的博客 3万+

C++《vector》

在之前C++《string》当中我们学习了string的各个接口的使用以及在string模拟实现当中试着实现了string当中日常我们会较为频繁使用到的接口,通过模拟实现我们对string的底层有了更深层次的理解。接下来在本篇当中我们将进行进行STL的学习,在本篇我们要学习的容器是vector也就是之前在数据结构学习过的顺序表,在学习vector过程中由于STL的接口大部分都是相识的因此在学习完string后学习vector将会轻松许多。接下来就开始本篇的学习吧!

mljy.博客 1947

C++ 【STL容器系列(一)】vector的使用

(Construct)构造函数接口说明vector()无参构造构造并且用n个val初始化vector(const vector& x)(重点)拷贝构造用迭代器来初始化构造列表初始化构造(C++11引入)为了方便观察,我们先定义一个打印函数,这个函数用范围for实现,这个函数会在后面讲解中频繁使用。//使用模板来实现,因为vector本身也是一个模板类//利用范围for来打印v// 无参构造// 用n个val初始化构造// 拷贝构造// 迭代器构造。

2301_80216111的博客 1069

STL vector用法介绍

介绍这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使用C类型的动态数组了。Vector总览vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板

long-long-ago 1500

C++_STL之vector篇

注:C++中若使用vector需包含头文件<vector>.

h_number_1的博客 1652

【C++庖丁解牛】STL之vector容器的介绍及使用 | vector迭代器的使用 | vector空间增长问题

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

RO-BERRY 1739
上一篇: 多线程下的多定时器处理
ToBe_NotToBe
博客等级 码龄15年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值