vector容器 常用函数

本文详细介绍了C++ STL中的vector容器,包括其作为顺序容器的特性、动态扩容机制、访问元素的方法以及常用函数。讨论了vector的构造、元素访问、迭代器操作、容量管理和插入删除等操作,并提供了代码示例展示如何使用vector。同时,提到了可能导致迭代器失效的操作及处理方式。

vector的介绍

vector是STL(标准模板库)中最常见的容器,它是一种顺序容器,支持随机访问。可以用sort对其进行排序,底层数据结构是数组,可以随机访问元素。

vector是一块连续分配的内存,从数据安排的角度来讲,和数组极其相似,不同的地方就是:数组是静态分配空间,一旦分配了空间的大小,就不可再改变了;而vector是动态分配空间,随着元素的不断插入,它会按照自身的一套机制不断扩充自身的容量。

vector的扩充机制:按照容器现在容量的一倍进行增长。vector容器分配的是一块连续的内存空间,每次容器的增长,并不是在原有连续的内存空间后再进行简单的叠加,而是重新申请一块更大的新内存,并把现有容器中的元素逐个复制过去,然后销毁旧的内存。这时原有指向旧内存空间的迭代器已经失效,所以当操作容器时,迭代器要及时更新。

访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是线性时间复杂度。

注:如果要使用vector,则需要添加vector头文件,即#include,除此之外,还需要添加using namespace std;

vector的定义

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

语法:

1.vector();
无参数 - 构造一个空的vector

2.vector(size_type num, const TYPE &val);
数量(num)和值(val) - 构造一个初始放入num个值为val的元素的Vector

举例,假如构造一个包含3个值为4的vector
vector v1(3,4);

3.vector(const vector &from);
vector(from) - 构造一个与vector from 相同的vector

4.vector(input_iterator start, input_iterator end);
迭代器(start)和迭代器(end) - 构造一个初始值为[start,end)区间元素的Vector(注:半开区间)

#include<iostream>
#include <vector>

using namespace std;
int main() {
   
   
	vector<int> sdt;//无参构造
	vector<int>  s1(4,100);//构造并初始化4个100
	vector<int> s2(s1.begin(), s1.end());//使用迭代器进行初始化构造
	vector<int> s3(s1);//拷贝构造
	return 0;
}

在这里插入图片描述

访问vector容器内元素的方法

1.通过下标访问

和访问普通的数组是一样的,对一个定义为vector v的vector容器,直接使用v[index]访问即可,其中index∈[0,v.size()−1]

2.通过迭代器访问

迭代器可以理解为一种类似指针的东西

vector::iterator it;定义迭代器,得到了迭代器it之后,可以通过*it来访问vector中的元素

3.v[i]和*(v.begin()+i)是等价的

4.迭代器来实现了两种自加操作和自减操作

5.begin()函数的作为是为取v的首元素地址,end()函数并不是为了取v的尾元素地址,而是取尾元素地址的下一个地址。它作为迭代器末尾标志,不储存任何元素

6.在常用STL容器中,只有在vector和string中,才允许使用v.begin()+3这种迭代器加上整数的写法

vector常用函数

vector常用函数的时间复杂度:

push_back(),时间复杂度为O(1)
pop_back(),时间复杂度为O(1)
size(),时间复杂度为O(1)
clear(),时间复杂度为O(N
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值