【C++】趁室友玩游戏的时候来学一学Vector吧:浅谈Vector

浅谈Vector

前言

  这些天在leetcode刷题大多数时候需要用到对vector进行使用和操作,下面就来总结一下vector的常见用法。

vector的定义

在使用vector之前需要在代码头部添加#include<vector>

单独定义一个vector:

vector<typename> name;

这里的typename可以是任何基本类型,例如int、double、char、结构体等,也可以是vector、set、queue等STL标准容器,不过注意一个细节,在定义typename为STL容器时,要在>>中间加上空格,因为C++11之前会把它视为位移操作,例如:

vector<vector<int>>name;//可能会被识别为位移操作符
vector<vector<int> > name;
六种初始化方法:
vector<int> a;//vector为空,size为0,没有分配内存空间
vector<int> b(a);//或者
vector<int>b = a;//拷贝初始化,b与a有相同的元素和容量
vector<int> c = {
    
    1, 2, 3, 4, 5, 6};//拷贝列表中的元素
vector<int> d(c.begin() + 1, c.end() - 1);//d初始化为两个迭代器指定范围中元素的拷贝
vector<int> e(7);//e中将包含7个元素,每个元素进行缺省的值初始化,对于int,也就是被赋值为0,因此e被初始化为包含7个0
vector<int> f(6,3);//指定值初始化,f被初始化为包含7个值为3的int值
二维数组初始化
vector<vector<int> > a;//初始化一个二维的int型数组

vector容器内元素的获取

通过下标访问
vector<int> a;

我们可以通过下标对a内元素进行访问,例如a[1] == 2 ,当然,这里的下标和普通数组一样都是从0到a.size() - 1 。

通过迭代器访问

迭代器是一种类似于指针的东西,定义为:

vector<int> :: iterator it;

下面为通过迭代器访问vector的一个小例子:
vector可见a[i] 和 *(a.begin() + i) 是等价的。

vector常用函数

push_back()

push_back(x)就是在vector后面加上一个元素x,时间复杂度为O(1)

#include<iostream>
#include<vector>

using namespace std;

int main(){
    
    
	vector<int>a;
	for(int i = 1; i <= 5; i ++)a.push_back(i);//插入1~5 
	for(int i = 0; i < 5; i ++) cout<<a[i]<<" "; 
	return 0;
} 
pop_back()

pop_back()用来删除vector的尾元素,时间复杂度为O(1)
截图

size()

size()用来获得vector中的元素个数,时间复杂度为O(1),size()的返回类型为unsigned类型

clear()

顾名思义,clear()就是清楚vector中所有元素,时间复杂度为O(n),n为vector中元素个数
截图

扫描二维码关注公众号,回复: 15747788 查看本文章
insert()

insert(it, x)用来向vector的任意迭代器it处插入一个元素x,时间复杂度为O(n)
截图

erase()

erase()既可以删除单个元素也可以删除一个区间内所有元素

(1)删除单个元素
erase(it)删除迭代器为it的元素
截图
(2)删除一个区间内所有元素
erase(a, b)即为删除[a, b)内所有元素

截图

下面来做两题吧!


1470. 重新排列数组

1929. 数组串联

解决方案可以看看leetcode上的题解,或者是:我的解决方案在此

猜你喜欢

转载自blog.csdn.net/qq_46686675/article/details/122029481