蓝桥杯C++基础之标准库vector

标准库类型vector

vector表示对象的集合,其中所有对象的类型都相同。集合中的每个对象都有一个与之对应的索引,索引用于访问对象。因为vector“容纳着”其他对象,所以它也常被称作容器(container)。

#include<vector>
using std::vector

1、定义和初始化vector对象

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

2、向vector对象中添加元素

vector<int> v2;
for(int i=0;i!=100;++i){
	v2.push_back(i);
}

3、其他vector操作

操作说明
v.empty()如果v中不含有任何元素返回true
v.size()返回v中元素的个数
v.push_back(t)向v的尾端添加一个值为t的元素
v[n]返回v中第n个位置上元素的引用
v1=v2用v2中的元素拷贝替换v1中的元素
v1={a,b,c…}用列表中元素的拷贝替换v1中的元素
v1==v2v1和v2相等当且仅当它们的元素数量相同且对应位置的元素值相同
v1!=v2
<,<=,>,>=按字典顺序进行比较

!!!注意

  • 不能使用下标添加元素

  • vector<int> arr;
    for(decltype(arr.size()) i=0;i!=10;++i){
    	arr[i]=i;//错误arr不包含任何元素,只能使用arr.push_back(i)插入元素。
    }
    

迭代器(iterator)

有时又称光标(cursor)是程序设计的软件设计模式,可在容器对象上遍访的接口,设计人员无需关心容器对象的内存分配的实现细节。

使用下标运算符访问string对象的字符或vector对象的元素,就是类似于这种机制的一种更通用的机制就是迭代器。C++本身没有迭代器的特色,但STL利用模板实现了功能强大的迭代器。

1、使用迭代器

获取迭代器不是使用取地址符,而是容器对象的类型都拥有begin和end的成员,begin成员负责返回指向第一个元素的的迭代器。end成员负责返回指向最后一个元素的迭代器。

string s("some string");
if(s.begin()!=s.end()){//确保s非空
	auto it = s.begin();//it表示s的第一个字符
	*it=toupper(*it);//将当前字符改写成大写形式
}

2、迭代器类型

像string和vector的size_type成员一样不知的是什么类型,迭代器返回的其实是iterator和const_iterator类型也是不清楚具体是什么类型。

如果对象是一个常量则只能使用const_iterator;如果不是常量则两种类型都可以。所以begin和end返回的类型是由对象是否为常量决定的。

c++11引入两个新函数cbegin和cend无论对象是不是常量返回值都是const_iterator。

!!!注意

  • 范围for循环中不能向vector对象添加元素
  • 任何一种可能改变vector对象容量的操作,比如push_back,都会使该vector对象的迭代器失效。
  • 但凡使用了迭代器的循环都不能向容器中添加元素
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值