#include<iostream>
#include<cstdio>
#include<string>
#include<vector>
#include<cmath>
#include<limits.h>
#include<set>
#include<algorithm>
#include <bitset>
using namespace std;
int main()
{
vector<int> tes;
for(int i=1;i<=10;i++)
{
tes.push_back(i);
}
vector<int>::iterator beg=tes.begin();
vector<int>::iterator end=tes.end();
// cout<<end-beg<<endl; //长度 为10 如果beg-end则为-10
// cout<<end + beg<<endl; //不能相加 会报错 只支持减法
// cout<<(end-beg)/2<<endl;//一半长度
// cout<<*(beg+(end-beg)/2)<<endl; //得到中间位置的迭代器 并解引用
//二分法 迭代器
int findn;
cin>>findn;
//这里要注意mid的取值 必须要从beg开始 ,vector不同于数组,没有规定起点就会报错
//不同于索引使用加法,以beg为起点用减法同样可以找出中点 可以用笔验算下
vector<int>::iterator mid=beg+(end-beg)/2;
while(mid!=end&& *mid!=findn)
{
if(findn==*mid) break;
if(findn<*mid)
end=mid-1;
else
beg=mid+1;
mid=beg+(end-beg)/2;
}
cout<<"ans"<<*mid<<endl;
//迭代器操作
// vector<int>::iterator iter=tes.begin();
// iter++;
// 解引用
// cout<<"*it "<<*iter<<endl;
// cout<<"it "<< iter<<endl;//报错
}
[c++] 迭代器的一些测试(迭代器二分)
最新推荐文章于 2025-10-23 12:35:22 发布
本文详细探讨了C++中vector容器的使用,包括元素的添加、迭代器的基本操作以及如何利用迭代器实现二分查找算法。通过具体代码示例,深入理解vector的迭代器工作原理。
636

被折叠的 条评论
为什么被折叠?



