vector容器

1.基本概念

vector数据结构和数组非常相似,也称为单端数,不同之处在于数组是静态空间,而vector可以动态扩展
动态扩展: 并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间

 

 

2.构造函数 

vector<T> v;        //采用模板实现类实现,默认构造函数
vector < int > v1 ;
vector(v.begin(), v.end()) ;         //将 v[begin(), end()) 区间中的元素拷贝给本身。
vector < int > v2 ( v1 . begin (), v1 . end ());
vector(n, elem) ;         //构造函数将 n elem 拷贝给本身。
vector < int > v3 ( 10 , 100 );
vector(const vector &vec) ;         //拷贝构造函数。
vector < int > v4 ( v3 );

 

3.赋值操作 

vector& operator=(const vector &vec); //重载等号操作符

vector<int> v1;

vector < int > v2 ;
v2 = v1 ;

assign(beg, end); //[beg, end)区间中的数据拷贝赋值给本身。 

vector < int > v3 ;
v3 . assign ( v1 . begin (), v1 . end ());
assign(n, elem) ; // n elem 拷贝赋值给本身。
vector < int > v4 ;
v4 . assign ( 10 , 100 );

 

4.容量和大小  

empty();         // 判断容器是否为空
int a= v1 . empty ();        //1为空,0为非空
capacity();         // 容器的容量
int b= v1 . capacity ();
size();         // 返回容器中元素的个数
int c= v1 . size ();
resize(int num);         // 重新指定容器的长度为 num ,若容器变长,则以默认值填充新位置。
如果容器变短,则末尾超出容器长度的元素被删除。
//resize 重新指定大小 ,若指定的更大,默认用 0 填充新位置,可以利用重载版本替换默认填充
v1 . resize ( 15 , 10 );
resize(int num, elem);         // 重新指定容器的长度为 num ,若容器变长,则以 elem 值填充新位置。
如果容器变短,则末尾超出容器长度的元素被删除
v1 . resize ( 5 );         //resize 重新指定大小 ,若指定的更小,超出部分元素被删除

 

5.插入和删除 

push_back(ele) ;         // 尾部 插入元素 ele
v1 . push_back ( 10 );
pop_back() ;         //删除最后一个元素
v1 . pop_back ();
insert(const_iterator pos, ele) ;         //迭代器指向位置 pos 插入元素 ele
v1 . insert ( v1 . begin (), 100 );
insert(const_iterator pos, int count,ele);         // 迭代器指向位置 pos 插入 count 个元素 ele
v1 . insert ( v1 . begin (), 2 , 1000 );         //在第0个位置插入两个1000
erase(const_iterator pos);         // 删除迭代器指向的元素
v1 . erase ( v1 . begin ());
erase(const_iterator start, const_iterator end);         // 删除迭代器从 start end 之间的元素
v1 . erase ( v1 . begin (), v1 . end ());
clear() ; // 删除容器中所有元素
v1 . clear ();

 

6.数据存取  

at(int idx) ;         //返回索引 idx 所指的数据
vector < int > v1 ;
int a=v1 . at ( i );
operator[] ;         //返回索引 idx 所指的数据
int b=v1 [ i ]
front() ;         //返回容器中第一个数据元素
int c=v1 .front () ;
back() ;         //返回容器中最后一个数据元素
int d= v1 . back ();

 

 7.互换容器

swap(vec);         // 将vec与本身的元素互换  

v1.swap(v2);  

可用 vector<int>(v).swap(v); 收缩内存 
本质上是创建了一个匿名对象x,编译器会用容器v的元素个数初始化x的大小,用swap()交换时交换了内存,最后编译器自动回收x的内存

 

8.预留空间 

reserve(int len);         //容器预留len个元素长度,预留位置不初始化,元素不可访问。

v.reserve(100000);  

总结:如果数据量较大,可以一开始利用reserve预留空间  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值