c++之反向迭代器

#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(){
char s[]={'1','c','c'};
cout<<string(s,s+2)<<endl;
system("pause");
return 0;
}

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main(){
string name="huanfeihong tanhuidong laiyiwen lujinghong lizhangcheng yanglidao";

char c='li';
string::iterator iter=find(name.begin(),name.end(),c);
cout<<string(name.begin(),iter)<<endl;*/


string::reverse_iterator rkongge=find(name.rbegin(),name.rend(),' ');
cout<<string(name.rbegin(),rkongge)<<endl;
cout<<string(rkongge.base(),name.end())<<endl;
system("pause");
return 0;
}
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(){
int a[]={1,2,3,4,5,6,7,8,9,10};
vector<int>v(a,a+10);

vector<int>::reverse_iterator iter=v.rbegin();
while(iter!=v.rend()){
cout<<*iter<<endl;
++iter;
}
system("pause");
return 0;
}
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(){
string s[]={"zgabg","ren","chgeng","ni","hao","ma","wo","zai","xue","xiao"};
vector<string>v(s,s+10);
for(vector<string>::reverse_iterator iter=v.rbegin();iter!=v.rend();++iter){
cout<<*iter<<endl;
}
system("pause");
return 0;
}
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(){
string s[]={"zgabg","ren","chgeng","ni","hao","ma","wo","zai","xue","xiao"};
vector<string>v(s,s+10);

for(vector<string>::iterator iter=v.begin();iter!=v.end();++iter){
cout<<*iter<<endl;

}
cout<<"***************"<<endl;
vector<string>::iterator ii=v.end();
while(ii!=v.begin()){
cout<<*--ii<<endl;
}
system("pause");
return 0;
}
#include<iostream>
#include<string>
#include<list>
#include<algorithm>
using namespace std;
int main(){
int a[]={1,2,0,4,5,0,7,8,0,10};
list<int>lst(a,a+10);

list<int>::reverse_iterator ri=find(lst.rbegin(),lst.rend(),0);

if(ri!=lst.rend()){
cout<<"找到了"<<endl;
cout<<*ri<<endl;
cout<<*(--ri)<<endl;
}
system("pause");
return 0;
}
#include<iostream>
#include<string>
#include<vector>
#include<list>
using namespace std;
int main(){
int a[]={1,2,3,4,5,6,7,8,9,10};
vector<int>v(a,a+10);


// 10-3+1=8 10-7+1=4
vector<int>::reverse_iterator rbeg=v.rbegin()+3;
vector<int>::reverse_iterator ren=v.rbegin()+8;
list<int>lst(rbeg,ren);

for(list<int>::iterator iter=lst.begin();iter!=lst.end();++iter){
cout<<*iter<<endl;

}
system("pause");
return 0;
}

### C++ String 反向迭代器的使用方法 在 C++ 中,`std::string` 提供了反向迭代器的功能,允许从字符串末尾向前遍历字符。以下是关于 `std::string` 的反向迭代器使用的详细介绍。 #### 创建和初始化反向迭代器 可以利用成员函数 `rbegin()` 和 `rend()` 来获取指向字符串最后一个有效字符位置以及理论上的前一个位置之前的反向迭代器: ```cpp #include <iostream> #include <string> int main() { std::string str = "hello"; // 获取反向迭代器 auto rit = str.rbegin(); } ``` #### 遍历整个字符串 通过循环结构配合上述获得的反向迭代器对象实现对字符串内所有元素按逆序访问的效果: ```cpp for (; rit != str.rend(); ++rit) { std::cout << *rit; } // 输出 olleh ``` 这里需要注意的是,在比较终止条件时应采用不等于运算符(`!=`)而非小于号(`<`);另外每次迭代操作后记得更新当前指针的位置即执行自增/自减动作以便移动到下一个目标处[^1]。 #### 查找特定子串并打印其后的部分 假设现在有一个需求是要找到某个指定模式第一次出现的地方之后的内容,则可借助标准库中的算法如 `std::search` 结合反向迭代来进行处理: ```cpp if (auto pos = std::search(str.rbegin(), str.rend(), std::boyer_moore_searcher( target_string.rbegin(), target_string.rend())); pos != str.rend()) { // 找到了匹配项 std::copy(pos.base(), str.end(), std::ostream_iterator<char>(std::cout)); } else { // 没有发现任何符合条件的结果 std::cout << "Not Found!"; } ``` 此段代码展示了当定位成功后如何继续输出剩余未被检索过的序列片段[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值