博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(原創) 如何使用reverse_iterator? (C/C++) (STL)
阅读量:7058 次
发布时间:2019-06-28

本文共 1232 字,大约阅读时间需要 4 分钟。

若要將vector中反過來列印,該怎麼做呢?STL提供了reverse_iterator。

 1
ExpandedBlockStart.gif
ContractedBlock.gif
/**/
/* 
 2InBlock.gif(C) OOMusou 2006 http://oomusou.cnblogs.com
 3InBlock.gif
 4InBlock.gifFilename    : ReverseIterator.cpp
 5InBlock.gifCompiler    : Visual C++ 8.0 / ISO C++
 6InBlock.gifDescription : Demo how to use reverse_iterator
 7InBlock.gifRelease     : 12/17/2006 1.0
 8ExpandedBlockEnd.gif*/
 9
None.gif#include 
<
iostream
>
10
None.gif#include 
<
vector
>
11
None.gif#include 
<
algorithm
>
12
None.gif
13
None.gif
using
 
namespace
 std;
14
ExpandedBlockStart.gifContractedBlock.gif
int
 main() 
dot.gif
{
15ExpandedSubBlockStart.gifContractedSubBlock.gif  int ia[] = dot.gif{
123}
;
16InBlock.gif  vector<int> ivec(ia, ia + sizeof(ia) / sizeof(int));
17InBlock.gif
18InBlock.gif  // use reverse_iterator by for loop
19InBlock.gif  for(vector<int>::reverse_iterator r_iter = ivec.rbegin(); r_iter != ivec.rend(); ++r_iter) 
20InBlock.gif    cout << *r_iter << " ";
21InBlock.gif
22InBlock.gif  cout << endl;
23InBlock.gif
24InBlock.gif  // use ordinary iterator to print reversely
25ExpandedSubBlockStart.gifContractedSubBlock.gif  for(vector<int>::const_iterator iter = (--ivec.end()); iter >= ivec.begin();iter--dot.gif{
26InBlock.gif    cout << *iter << " ";
27InBlock.gif    if (iter == ivec.begin()) 
28InBlock.gif      break;
29ExpandedSubBlockEnd.gif  }
30InBlock.gif
31InBlock.gif  cout << endl;
32InBlock.gif
33InBlock.gif  // use reverse_iterator with copy() algorithm
34InBlock.gif  copy(ivec.rbegin(), ivec.rend(), ostream_iterator<int>(cout, " "));
35InBlock.gif  cout << endl;
36ExpandedBlockEnd.gif}

執行結果

None.gif
3
 
2
 
1
None.gif
3
 
2
 
1
None.gif
3
 
2
 
1
None.gif請按任意鍵繼續 . . .

19行的for loop,使用了reverse_iterator,讓我們很簡單的如操作一般的iterator般去處理reverse_iterator。

25行到29行,使用了一般的iterator去處理,程式有點詭異,主要是讓我們看出,若沒有reverse_iterator,程式有多難寫。

copy() algorithm也可搭配reverse_iterator,只需一行就可以了。

转载地址:http://tjgol.baihongyu.com/

你可能感兴趣的文章
转:Eclipse 各种小图标的含义
查看>>
javascript面向对象——构造函数和原型对象
查看>>
route 的标志位
查看>>
[转载]对于WebGrid第三方控件的使用
查看>>
[摘录]高效人士七习惯—以终为始原则
查看>>
angular 当使用ng-repeat 时出现 $$hashKey的键值对
查看>>
GoldenGate 性能优化方法
查看>>
正则表达式和re模块
查看>>
[区块链]Merkle Tree
查看>>
Token 认证
查看>>
搜索服务solr 一二事(1) - solr-5.5 使用自带Jetty或者tomcat 搭建单机版搜索服务器...
查看>>
Html5新增加的属性
查看>>
php生成图片缩略图,支持png透明
查看>>
Django——模板层(template)(模板语法、自定义模板过滤器及标签、模板继承)
查看>>
论一个蒟蒻的脑子里可以有多少坑(貌似咕了……目前更新保持在noip阶段)
查看>>
Python第三方库安装和卸载zz
查看>>
C++——虚函数表解析
查看>>
重磅!共享单车漏洞独家发布。
查看>>
html中特殊符号
查看>>
为什么 SharedPreferences 可以直接 调用,前面却没有对象
查看>>