C++ STL容器的学习---vector

简单点来说vector就是一个模板类,而且是连续的(list不是连续的),删除中间的任意一个元素,后面的元素都需要往前移动,但对于数组来说,它可以扩容.

一、定义和初始化

vector<typename>v1(最大容量,初始值)

vetcor<typename> v1.push_back(i);//向v1的尾部插入i;

vector<typename>v1.;//默认v1为空,故不能赋值

vector<typename>v1(n,i);//将v1初始化为n个i

vector<typename>v2(v1);//将v1复制给v2

vector<typename>v2(n);//v2含有n个0的值

int a[4]={0,1,2,3,4]; vector<int>v1(a,a+4);//将数组a复制给vector

二、使用方法

vector<typename> v1;

v1.push_back(i);//将i添加到v1的最后

v1.size();//返回的是当前v1的数据总个数.

v1.resize(2*v1.size);//将v1的容量翻倍     v1.resize(2*size,99);//将v1的容量翻倍,并且将初始值设置为99

for(vector<int>::itertaor p=v1.begin();p!=v1.end();p++)

{    cout<<*p;//遍历了v1的所用元素

}
对于const  vector<typename>v1 只能使用 const vector<typename>::iterator p 指针来进行遍历

v1.capacity() ;//用于获取当前v1最多能够存储的容量

v1.clear();//将v1清空

v1.erase(pointer1,pointer2);//将位于pointer1与pointer2中间的元素删除掉(包括pointer1)

v1.pop_back();//删除最后的元素

v1.insert(pointer1,n,i);//向pointer1后面插入n个i

v1.assign(n,elem);//将n个elem拷贝复制给v1

v1.back();//返回最后一个元素

v1.front();//返回第一个元素

v1.~vector<typename>销毁当前v1所有的元素并且清除所占的存储空间

三、实例

#include<iostream>
#include<vector>
#include<numeric>
using namespace std;
int main()
{
  vector<int>v1;
   for(int i=0;i<10;i++)
   {
     v1.push_back(i);
   }
 for(vector<int>::iterator p=v1.begin();p!=v1.end();p++)
 {

     cout<<*p;
     cout<<endl;

 }
 cout<<accumulate(v1.begin(),v1.end(),0)<<endl;
 cout<<"当前的内存容量"<<v1.capacity()<<endl;
   return 0;
}

对于大量的数据的push_back操作来说,应该一开始就对其进行扩容,以此来避免之后的不断的扩容.因为每一次扩容都是开辟新的空间,然后在将原来的数据复制过去,这样是很耗时间的.

猜你喜欢

转载自blog.csdn.net/qq_38345598/article/details/85220546