有时候我们要写一些从数组的后面往前遍历的程序,但使用的却是正向迭代器。
比如:
typedef vector<int>::iterator iter;
iter last=--a.end();
for (iter i=last-1;i>=a.begin();i--)
{
for (iter j=last;j>=i+1;j--)
{
if ( *i < *j )
{
athwart=pair<iter,iter>(i,j);
return true;
}
}
}
这里for (iter i=last-1;i>=a.begin();i--)中的i--一定会在i到达a.begin()之后再执行一次,这种操作是被终止的。程序到这里就崩溃了。所以遇到了此类问题一定要使用反向迭代器。
typedef vector<int>::reverse_iterator riter;
bool exist_athwart(vector<int>& a,pair<riter,riter>& athwart)
{
riter first=a.rbegin();
for (riter i=first+1;i<a.rend();i++)
{
for (riter j=first;j<i;j++)
{
if (*j > *i )
{
athwart=pair<riter,riter>(j,i);
return true;
}
}
}
return false;
}
这种使用的完整例子在《生成从1到n的全排列》那篇文章里有具体的用法,非常好用!
分享到:
相关推荐
更高级的迭代器支持更复杂的功能,如反向迭代器(reverse_iterator)用于反向遍历容器,以及输入和输出迭代器用于I/O操作。 总的来说,C++的迭代器是C++标准库中实现泛型编程和容器操作的核心工具,它们为程序员...
6. `crbegin()`、`crend()`: 类似于`rbegin()`和`rend()`,但返回常量反向迭代器。 **遍历list容器的示例** 下面的代码展示了如何使用`begin()`和`end()`以及`rbegin()`和`rend()`遍历`list`容器的元素: ```cpp #...
C++ Vector 的讲解 C++ Vector 是一种动态数组,封装了动态大小的数组,是一种顺序容器。...* 使用反向迭代器遍历元素(倒序输出):`for(vector<int>::reverse_iterator i=v.rbegin();i();i++){ cout*i;}`
- `rbegin()` 和 `rend()`:返回反向迭代器,用于从后向前遍历数组。 - `cbegin()`, `cend()`, `crbegin()`, `crend()`:提供常量迭代器版本,用于不改变元素的遍历。 - `size()`:返回数组中元素的数量,固定不变。...
- **array::rbegin()**:返回一个反向迭代器,指向数组的最后一个元素。 - **array::rend()**:返回一个反向迭代器,指向数组的第一个元素之前的位置。 - **array::cbegin()**:返回一个常量迭代器,指向数组的第...
- `reverse_iterator`: 反向迭代器,用于逆序遍历`vector`。 - `const_reverse_iterator`: 反向常量迭代器。 ##### 迭代器方法 - `begin()`: 返回指向`vector`首元素的迭代器。 - `end()`: 返回指向`vector`末元素...
例如,`std::vector`和`std::array`的迭代器就是随机访问迭代器。 使用迭代器时,通常需要声明迭代器类型,如`string::iterator`,然后通过`begin()`和`end()`获取容器的首尾迭代器,用`for`循环遍历元素。解引用...
- `begin()`和`end()`返回指向容器首尾元素的迭代器,`rbegin()`和`rend()`返回对应的反向迭代器,方便遍历。 - `empty()`检查容器是否为空,`size()`返回元素数量,`max_size()`返回理论上的最大元素数量。 - 迭代...
10.4.3 反向迭代器 363 10.5 泛型算法结构 365 10.5.1 5类迭代器 365 10.5.2 算法形参模式 367 10.5.3 算法命名规范 368 10.6 特定容器算法 369 小结 371 术语表 371 第11章 关联容器 373 11.1 ...
10.4.3 反向迭代器 363 10.5 泛型算法结构 365 10.5.1 5类迭代器 365 10.5.2 算法形参模式 367 10.5.3 算法命名规范 368 10.6 特定容器算法 369 小结 371 术语表 371 第11章 关联容器 373 11.1 ...