容器vector

目录

vector的定义

vector常见的初始化方法

1.使用花括号直接赋值

2.使用圆括号进行赋值

vector访问元素方法

1.通过下标进行访问

2.通过迭代器访问元素 

常见的vector函数

1.push_back(元素)

 2.pop_back()

3.size()

4.clear()

5.insert(位置,元素)

6.erase()

1.删除单个元素

2.删除一个区间的所有元素

vector的定义

vector也叫“变长数组”,即长度根据需求进行改变的数组,是属于容器中的一种数据结构。其原理是将原数据拷贝在一块新空间上实现动态变化。

vector常见的初始化方法

1.使用花括号直接赋值

vector<int> v{ 1,2,3 };

2.使用圆括号进行赋值

vector<int> v(5, 8); //初始化5个值为8的元素
for(auto i : v) cout << i << " "; //输出8 8 8 8 8 

vector访问元素方法

1.通过下标进行访问

vector<int> v{ 1,2,3 };
cout << v[0]<<endl;

这里V[0]表示动态数组的第一个元素,当然最后一个元素为v[2]=3,并且需要注意的是v.begin()指向的是v[0],而v.end()则是指向的是最后一个元素的下一个位置 

2.通过迭代器访问元素 

迭代器(iterator)可以看作是一种类似指针的东西 

vector<typename>::iterator it;

其中typrname表示存储的数据类型,如int/double,通过上面定义得到迭代器it从而去访问vector里的元素 

#include<vector>
#include <iostream>
using namespace std;

int main() {
	vector<int> v;
	v.push_back(1);	//依次输入1、 2、 3 
	v.push_back(2);
	v.push_back(3);
	for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
		cout << *it << " ";
	}
	system("pause");
	return 0;
}

其中对一个vector常见的遍历输出方式为

for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
		cout << *it << " ";
	}

常见的vector函数

1.push_back(元素)

在现有的容器后添加一个元素

 2.pop_back()

删除尾元素

3.size()

获取vector中元素个数
vector<int> v{1,2,3};
cout<<v.size();

4.clear()

清楚vector容器中的所有元素

5.insert(位置,元素)

在某个位置插入某个元素
#include<bits/stdc++.h>
using namespace std;
int main(){
	vector<int> v;
	for(int i = 1; i <= 5; i++){
		v.push_back(i);	//将1、2、3、4、5 依次插入v的队尾 
	}
	v.insert(v.begin() + 2, -1);	//将-1插入v[2]的位置 
	for(vector<int>::iterator it = v.begin(); it != v.end(); it++){
		cout << *it << " ";
	}
	
	return 0; 
} 

输出结果为

1 2 -1 3 4 5

还可以利用这个函数完成两个vector的拼接,即insert(v1.end(),v2.begin(),v2.end())

#include<bits/stdc++.h>
using namespace std;
 
int main(){
	vector<int> v, v1, v2;
    for(int i = 1; i <= 3; i++) v.push_back(i);
	for(int i  = 11; i <= 13; i++) v1.push_back(i);
	for(int i  = 101; i <= 103; i++) v2.push_back(i);
	v.insert(v.end(), v1.begin(), v1.end());  //输出1 2 3 11 12 13
	v.insert(v.end(), v2.begin(), v2.end()); //输出1 2 3 11 12 13 101 102 103
 
    return 0;
}

6.erase()

1.删除单个元素

erase(下标)即代表删除某个元素
#include<bits/stdc++.h>
using namespace std;
int main(){
	vector<int> v;
	for(int i = 1; i <= 5; i++){
		v.push_back(i);	//将1、2、3、4、5 依次插入v的队尾 
	}
	v.erase(v.begin() + 2);	//删除3 
	for(vector<int>::iterator it = v.begin(); it != v.end(); it++){
		cout << *it << " ";
	}
	
	return 0; 
} 

2.删除一个区间的所有元素

erase(下标1,下标2)即代表删除[下标1,下标2)的所有元素,注意是左闭右开,所以
v[下标1]这个元素会被删除,v[下标2]这个元素不会删除
#include<bits/stdc++.h>
using namespace std;
int main(){
	vector<int> v;
	for(int i = 1; i <= 5; i++){
		v.push_back(i);	//将1、2、3、4、5 依次插入v的队尾 
	}
	v.erase(v.begin() + 1, v.begin() + 3);	//删除2和3 
	for(vector<int>::iterator it = v.begin(); it != v.end(); it++){
		cout << *it << " ";
	}
	
	return 0; 
} 

输出接果

1 4 5

所以要想用erase实现删除所有元素正确写法是

v.erase(v.begin(),v.end())

其中v.end()表示的是尾元素的下一个地址

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值