C++学习之路(vector 向量)

vector

是一个封装了动态大小数组的顺序容器,向量是一个能够存放任意类型的动态数组。

迭代器

https://blog.csdn.net/lpstudy/article/details/80281769

迭代器类型

vector<int>::iterator it1;//it1能读写vector<int>中的元素
string ::interator it2;//it2能读写String中的元素
vector<int>::const_iterator it3;//只能读
string::const_iterator it4;//只能读
auto b=v.begin();
auto c=v.end();
//	对象是常量 返回值const_iterator 如果不是iterator 
auto it3=v.cbegin();
auto it4=v.cend();
//无论vector对象(或string对象)本身是否为常量,返回值都是都是const_iterator

解引用:
获取地址的值

int *p= &a;     //定义一个整型指针  p    并且p指向了a的地址     (&取地址)

*p=10;        //解引用, 即 给a赋值10;
(*it)empty();//解引用it,然后调用对象的empty();对象
*it.empty();//错误

箭头运算符(->)即表示:

it->mem==(it*).mem;

vector的限制

不能在for循环中添加对象。改变容量eg:push_back会使vector的迭代器失效

迭代器的运算

在这里插入图片描述
举例,指向某vector对象的中间位置:

auto mid=vi.begin()+mid.size()/2;
/*下标从0开始*/

迭代器二分搜索
二分法,即从中间开始搜索,元素小于中间值从前半段搜索,大于中间值,从后半段开始。

auto target;
vetor <int> text;
auto beg=text.begin();
auto end=text.end();
auto mid=text.begin();+(text.begin()-text.end());
while(mid!=end&&*(mid)!=target){
if(target<mid){
end=mid;
}else{
beg=mid+1;
}
mid=beg+(end-beg)/2;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值