编写程序练习了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;
}
运行结果: