标准模板库 (向量 vector)

编写程序练习了vector 的主要函数。

从中学习到了一些知识点:

1.vector的内部其实还是数组。

2.at用于按照索引访问任意位置的元素,front用于访问头元素,back用于访问尾元素。

3.arr.at(i)和arr[i] 是等价的,在vector的内部重载了[]操作符。

4.push_back用于在尾部追加一个元素,pop_back用于删除尾部元素,resize用于重置vector的容量,clear用于清空vector。

5.迭代器(iterator)是vector的内部类,可以对vector进行遍历。

6.vector重载了*和->,可以进行星号操作。

7.insert,用于在指定位置插入一个元素,erase,用于从中删除一个元素。但在vector中尽量不用这两个,因为会造成大量的数据移动。

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

int main()
{
	vector <int> arr(128);
	int capacity=arr.capacity();//返回当前容量
	int size=arr.size();//返回数组的个数
	arr[25]=99;
	arr[0]=15;
	arr[127]=127;
	int at=arr.at(25);//按照索引访问任意位置的值
	cout<<"访问第26个位置的元素:"<<at<<endl;
	int front=arr.front();//返回首元素
	cout<<"访问首元素:"<<front<<endl;
	int back=arr.back();//返回尾元素
	cout<<"访问尾元素:"<<back<<endl;
	cout<<capacity<<endl;//输出容量
	cout<<size<<endl;//输出大小
	arr.clear();//清空
	cout<<"清空后:"<<endl;
	cout<<arr.capacity()<<endl;
	cout<<arr.size()<<endl;
	cout<<"尾部添加元素:"<<endl;
	arr.push_back(5);
	arr.push_back(2);
	for(int i=0;i<arr.size();i++)
		cout<<arr.at(i)<<endl;
	cout<<"删除尾部元素:"<<endl;
	arr.pop_back();
	for(int j=0;j<arr.size();j++)
		cout<<arr.at(j)<<endl;
	cout<<"重置容量,12个数据:"<<endl;
	arr.resize(12);
	for(i=0;i<arr.size();i++)
		cout<<arr.at(i)<<" ";
	cout<<endl;
	//迭代器对vector内部进行遍历
	cout<<"迭代器对vector内部进行遍历:"<<endl;
	for(vector<int>::iterator iter=arr.begin();
		iter!=arr.end();iter++)
	{
		int &p=*iter;
		cout<<p<<" ";
	}
	cout<<endl;
	arr.insert(iter,2,3);//在iter指向的位置插入2个3
	arr.insert(iter,2);//在iter指向的位置插入1个2
	for(i=0;i<arr.size();i++)
		cout<<arr.at(i)<<" ";//从结果显示来看是以最初的vector作为标准在尾部插入
	cout<<endl;
	arr.erase(iter);//删除尾部元素
	for(i=0;i<arr.size();i++)
		cout<<arr.at(i)<<" ";//从结果显示来看是以最初的vector作为标准在尾部删除
	cout<<endl;
	return 0;
}

运行结果:


发布了74 篇原创文章 · 获赞 9 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/fu_yunjian/article/details/52711340