c++for循环倒序
时间: 2024-09-12 08:00:30 浏览: 95
在C++中,可以使用for循环来实现数组或容器的倒序遍历。通常,这可以通过以下两种方式之一完成:
1. 使用标准的for循环,从后向前迭代索引:
```cpp
for(int i = array_size - 1; i >= 0; i--) {
// 访问array[i]
}
```
这里`array_size`是数组的大小或者容器的元素数量。循环从数组的最后一个元素开始,一直迭代到第一个元素。
2. 使用基于范围的for循环(C++11及以上版本),先复制容器,然后逆序迭代:
```cpp
for(auto it = array.rbegin(); it != array.rend(); ++it) {
// 访问*it
}
```
这里使用了`rbegin()`和`rend()`成员函数,分别返回容器的逆向迭代器,指向最后一个元素和容器开始的位置之前。通过逆向迭代器,可以直接访问容器中的元素,并且是逆序的。
以上两种方法都可以实现倒序遍历,但是它们的使用场景有所不同。标准的for循环比较通用,可以用于任何可以通过索引访问的容器。而基于范围的for循环则需要容器支持随机访问迭代器,并且在C++11之前的标准中不可用。
相关问题
c++ for循环有意思的代码
以下是一些有趣的C++ for循环代码:
1. 倒序输出数组元素:
```
int arr[5] = {1, 2, 3, 4, 5};
for (int i = 4; i >= 0; i--) {
cout << arr[i] << " ";
}
```
2. 输出九九乘法表:
```
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
cout << j << "x" << i << "=" << i*j << " ";
}
cout << endl;
}
```
3. 输出斐波那契数列前n项:
```
int n = 10;
int a = 0, b = 1, c;
for (int i = 1; i <= n; i++) {
cout << a << " ";
c = a + b;
a = b;
b = c;
}
```
c++ map倒序遍历
你可以使用`std::map`的`rbegin()`和`rend()`迭代器来实现倒序遍历。以下是一个示例代码:
```cpp
#include <iostream>
#include <map>
int main() {
std::map<int, std::string> myMap;
myMap = "one";
myMap = "two";
myMap = "three";
for (auto it = myMap.rbegin(); it != myMap.rend(); ++it) {
std::cout << it->first << ": " << it->second << std::endl;
}
return 0;
}
```
这段代码创建了一个`std::map`对象`myMap`,并向其中插入了一些键值对。然后,使用反向迭代器`rbegin()`和`rend()`循环遍历`myMap`,输出每个键值对的内容。输出结果为:
```
3: three
2: two
1: one
```
请注意,使用`rbegin()`和`rend()`进行的遍历是从最后一个键值对开始,按照键的逆序进行的。
阅读全文