C++:标准库类型vector

持续更新...

vector是一个类模板,vector是模板而非类型。

vector对象初始化

vector<T> v1;          //v1是一个空vector,它的的潜在元素是T类型的,执行默认初始化
vector<T> v2(v1);      //v2中包含有v1所以元素的副本
vector<T> v3(n,val);   //v3包含了n个重复的元素,每个元素的值都是val
vector<T> v4{a,b,c...};//v4包含了初始值个数的元素,每个元素被赋予相应的初始值

C++标准要求vector应该能在运行时高效快速的添加元素,因此一般情况下,更有效的方法是先定义一个空的vector对象,再在运行时向其中添加具体值。

不能用下标形式添加元素

vector对象(以及string对象)的下标运算可用于访问已存在的元素,而不能用于添加元素。

vector<int> ivec;  //空vector对象
for (int i = 0; i != 10; i++)
	ivec[i] = i;   //严重错误:ivec不包含任何元素
	//ivec.push_back(i); //正确

vector对象的操作

v.empty()    //v为空返回真,否则返回假

v.size()       //返回元素个数

v.push_back(t)  //向v的尾端添加一个值为t的元素

迭代器

  • string对象也支持迭代器
  • 如果容器为空,则begin()和end()返回的是同一个迭代器。可利用这个来检测容器是否为空。
if(s.begin()!=s.end())  //确保s非空
{
    ....
}
  • end返回的迭代器并不实际指示着某个值,所以不能对其进行递增或解引用的操作。
  • 迭代器类型:iterator和const_iterator,const_iterator和常量指针差不多,能读取但是不能修改它所指向的值。
  • cbegin()和cend()返回的迭代器类型都是const_iterator。
  • 任何一种可能改变vector对象容量的操作,比如push_back,都会使该vector对象的迭代器失效。谨记,但凡是使用了迭代器的循环体,都不要向迭代器所属的容器添加元素。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值