数据结构之顺序表进阶——vector

前言:

俗话说的“多一事不如少一事”,在我们编程的同时也是如此,越简单,越简便,效率越高谁最好的,有现成的何必不用,顺序表的建立太过于繁琐了,我们可以直接使用 vector 头文件中的,vector 容器来简化我们的顺序表,何乐而不为呢。

vector的定义:

官方文档的解释:

我的解释: 

我认为 vector 可以理解为我们顺序表中的动态顺序表,其可以特点和顺序表中的动态顺序表极为相似,并且其操作也比其更加简便,省去了很多的步骤,为我们的编程带来了更多的便捷。

vector的创建:

文字说明:

1.在我们创建vector之前我们要先引用其头文件<vector>

2.其创建的格式为:   vector<数据类型> 名称;

代码举例:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
	vector<int> num;
	return 0;
}

 vector的初始化:

1.在创建的时候便初始化:

vector<int> num{1,2,3,4,5,6};

2.不赋值的初始化(默认为0):

vector<int> num(3);//初始化了3个0

3.赋值的初始化:

vector<int> num(3,4);//赋值了3个4的初始化

vector的访问:

vector的访问虽然可以像数组一样访问,但我们一般不会这样访问,一般我们会使用真实的物理地址进行访问,我们一般直接用auto来判断其数据结构,而不是使用int,double等,其中物理地址是一个指针。

代码:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
	vector<int> num{1,2,3,4,5,6,7,8,9};
	for (auto it = num.begin(); it != num.end(); it++) {
		cout << *it << " ";
	}
//也可以使用 it<num.end()+n (n为数字,代表访问到第几个)
	return 0;
}
结果:

vector的基本操作: 

1.push_back():
解释:

在vector的后面直接加一个数据。

举例:
代码:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
	vector<int> num{1,2,3,4,5,6,7,8,9};
	cout << "push_back前的结果:" << endl;
	for (auto it = num.begin(); it != num.end(); it++) {
		cout << *it << " ";
	}
	cout << endl;
	num.push_back(10);
	cout << "push_back后的结果:" << endl;
	for (auto it = num.begin(); it != num.end(); it++) {
		cout << *it << " ";
	}
	return 0;
}
结果:

2.pop_back() :
解释:

将vector的最后的数据删除。

举例:
代码:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
	vector<int> num{1,2,3,4,5,6,7,8,9};
	cout << "pop_back前的结果:" << endl;
	for (auto it = num.begin(); it != num.end(); it++) {
		cout << *it << " ";
	}
	cout << endl;
	num.pop_back();
	cout << "pop_back后的结果:" << endl;
	for (auto it = num.begin(); it != num.end(); it++) {
		cout << *it << " ";
	}
	return 0;
}
结果:

3.erase(): 
解释:

删除单个或者一个区域内的元素。

举例:
代码:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
	vector<int> num{1,2,3,4,5,6,7,8,9};
	cout << "erase前的结果:" << endl;
	for (auto it = num.begin(); it != num.end(); it++) {
		cout << *it << " ";
	}
	cout << endl;
	num.erase(num.begin()+1,num.begin()+3 );
	//()中“,”前为开始位置,后为结束位置,若省略第一个和“,”则默认从开头开始
	cout << "erase后的结果:" << endl;
	for (auto it = num.begin(); it != num.end(); it++) {
		cout << *it << " ";
	}
	return 0;
}
结果:

4.size(): 
解释:

查看vector的长度,类似于顺序表中的len。

举例:
代码:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
	vector<int> num{1,2,3,4,5,6,7,8,9};
	cout <<"num的长度为:"<<endl << num.size();
	return 0;
}
结果:

5.clear(): 
解释:

清空vector中的所有东西。

举例:
代码:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
	vector<int> num{1,2,3,4,5,6,7,8,9};
	cout <<"num在clear前的长度为:"<<endl << num.size()<<endl;
	num.clear();
	cout << "num在clear后的长度为:" << endl << num.size();
	return 0;
}
结果:

6.insert(): 
解释:

插入元素。

举例:
代码:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
	vector<int> num{1,2,3,4,5,6,7,8,9};
	cout << "insert前的结果:" << endl;
	for (auto it = num.begin(); it != num.end(); it++) {
		cout << *it << " ";
	}
	cout << endl;
	num.insert(num.begin() + 2, 100);
	cout << "insert后的结果:" << endl;
	for (auto it = num.begin(); it != num.end(); it++) {
		cout << *it << " ";
	}
	return 0;
}
结果:

7.sort(): 
解释:

排序(不属于vector的操作,不过多解释,点到为止)位于<algorithm>头文件中。

举例:
代码:
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
	vector<int> num{1,3,6,2,7,8,9,100};
	cout << "sort前的结果:" << endl;
	for (auto it = num.begin(); it != num.end(); it++) {
		cout << *it << " ";
	}
	cout << endl;
	sort(num.begin(), num.end());
	cout << "sort后的结果:" << endl;
	for (auto it = num.begin(); it != num.end(); it++) {
		cout << *it << " ";
	}
	return 0;
}
结果:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木兮xg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值