10月5号第三篇文章!这次分享一下STL库中vector的使用,vector向量是一个能够存放任意类型的动态数组。

vector(向量) 头文件 <vector>

1.vector的建立

vector<数据类型> 变量名称;

vector<数据类型> 变量名称(最大容量);

2.对vector的操作

vector的函数

  • void push_back(const T& x):向量尾部增加一个元素X
  • void pop_back():删除向量中最后一个元素
  • void clear():清空向量中所有元素
  • reference at(int pos):返回pos位置元素的引用
  • reference front():返回首元素的引用
  • reference back():返回尾元素的引用
  • bool empty() const:判断向量是否为空,若为空,则向量中无元素
  • int size() const:返回向量中元素的个数
  • void assign(int n,const T& x):设置向量中第n个元素的值为x
  • void swap(vector&):交换两个同类型向量的数据

3.实现以上函数代码及效果

#include<iostream> 
#include<vector> 
using namespace std;
int main() {
	vector<int> v;//建立一个容器v 
	int n; int a;
	cin >> n;//向内存n个数据;
	for (int i = 0; i < n; i++) {
		cin >> a;
		v.push_back(a);
		//向内存数据 
	}
	for (int i = 0; i < v.size(); i++) {
		cout << v[i] << ' ';//输出v中的每个元素 
	}
	cout << endl;
	v.pop_back();
	//删除最后一个元素 
	for (int i = 0; i < v.size(); i++) {
		cout << v[i] << ' ';//再输出v中的每个元素 
	}
	v.clear();//清空v 
	for (int i = 0; i < v.size(); i++) {
		cout << v[i] << ' ';//再输出v中的每个元素 
	}
	if (v.empty())//判断是否为空 
		cout << "v have no things";
	return 0;
}
#include<iostream>
#include<vector>


using  namespace std;


int main()
{
	vector<int> v;//建立一个容器v
	int n;
	int a;
	cin >> n;//向内存n个数据;
	for(int i=0;i<n;i++)
	{
		cin >> a;
		v.push_back(a);//向内存数据
	}
	for (int i = 0; i < v.size(); i++) {
		cout << v[i] << ' ';//输出v中的每个元素
	}
	cout << endl;
	cout << v.at(7) << endl;//返回第7个位置的元素
	cout << v.front() << ' ' << v.back();//头元素及尾元素
	cout << endl;
	v.assign(10, 77777);//设置v中十个元素为77777 其余的清除掉
	for (int i = 0; i < v.size(); i++) {
		cout << v[i] << ' ';//输出v中的每个元素
	}
	vector<int> v1;//建立空v1
	v.swap(v1);
	for (int i = 0; i < v1.size(); i++) {
		cout << v1[i] << ' ';//输出v1中的每个元素 注意是v1
	}
 	return 0;
}

4.有关vector的sort

上一篇说了数组的排序,其实vector也是可以排序的!

这里用到了sort()和reverse()函数 并且在最后提到了输出vector元素的另一种方法

#include<iostream>
#include<cmath>
#include<algorithm>
#include<vector>

using  namespace std;


int main()
{
	vector<int> v;//建立一个容器v
	int n;
	int a;
	cin >> n;//向内存n个数据;
	for (int i = 0; i < n; i++)
	{
		cin >> a;
		v.push_back(a);//向内存数据
	}
	for (int i = 0; i < v.size(); i++) {
		cout << v[i] << ' ';//输出v中的每个元素
	}
	sort(v.begin(), v.end());//从小到大
	cout << "\n从小到大:\n";
	for (int i = 0; i < v.size(); i++)
	{
		cout << v[i] << ",";
	}
	cout << "\n从大到小:" << endl;
	reverse(v.begin(), v.end());//从大到小 
	vector<int>::iterator it;//声明一个迭代器,来访问vector容器,作用:遍历或者指向vector容器的元素 
	for (it = v.begin(); it != v.end(); it++)
	{
		cout << *it << " ";
	}
	return 0;
}